【问题标题】:MYSQL-Display hired number of yearsMYSQL-显示聘用年数
【发布时间】:2019-06-19 14:08:20
【问题描述】:

问题是:

将员工受雇的年数显示为 NUM_OF_YEARS,并按姓氏对列表进行排序。

这是另一台电脑上使用的代码,运行良好。

SELECT  `lastname` AS "LASTNAME", 
DATE_FORMAT(`hire_date`,'%d-%M-%Y') AS "HIRED DATE",
TRUNCATE(DATEDIFF(CURDATE(),CONVERT(`hire_date`,DATETIME))  / 365 ,0) AS "NO_OF_YEARS",
DATEDIFF(YEAR(), `hire_date`, CURDATE()) AS "DATE"
FROM `activity6`.`employee`;

现在我尝试使用 Xampp (3.2.2) 并使用上面相同的代码运行它,这是我得到的错误:

您的 SQL 语法有错误;检查手册 对应于您的 MariaDB 服务器版本,以便使用正确的语法 ') 附近,hire_date,CURDATE()) 作为“日期” FROM activity6.employee' 在第 5 行

这是我创建的表,必须用于上面的代码。----

因此,同时我需要创建另一个列来显示这些员工截至该日期(2019 年)的年数。 我真的不确定要使用什么正确的查询。

【问题讨论】:

  • 进行基本调试。首先做 convert(),然后尝试 Datediff,然后添加截断,当你知道什么函数给你错误时,检查手册是否正确 sintaxis
  • This is the code used on the other pc and it run well. 你在另一台电脑上使用相同的 rdbms 吗?
  • 请定义年数的计算。你的意思不是很明显。

标签: mysql sql database datetime


【解决方案1】:

DATEDIFF 函数中,您使用了 3 个参数,而该函数需要 2 个,我删除了 YEAR() 参数:

SELECT  `lastname` AS "LASTNAME", 
        DATE_FORMAT(`hire_date`,'%d-%M-%Y') AS "HIRED DATE",
        TRUNCATE(DATEDIFF(CURDATE(),CONVERT(`hire_date`,DATETIME))  / 365 ,0) AS "NO_OF_YEARS",
        DATEDIFF( `hire_date`, CURDATE()) AS "DATE"
FROM `activity6`.`employee`;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 2015-05-22
    • 2013-05-05
    • 2012-09-02
    • 2013-09-09
    • 1970-01-01
    相关资源
    最近更新 更多