使用DATEDIFF语法时出错

时间:2015-04-23 00:16:47

标签: sql db2 datediff

我正在尝试使用以下代码从SAMPLE数据库中找到员工的年龄:

SELECT
    EMPNO,
    FIRSTNME,
    LASTNAME,
    JOB,
    BIRTHDATE,
    DATEDIFF(HOUR,BIRTHDATE,GETDATE())/8766 AS AGE
FROM EMPLOYEE
WHERE JOB LIKE '%R';

但我一直收到错误:

  

“HOUR”在使用它的上下文中无效.SQLCODE = -206,   SQLSTATE = 42703

这是使用IBM Data Studio 4.1。

2 个答案:

答案 0 :(得分:0)

假设您正在使用DB2,它不支持DATEDIFFGETDATE()。相反,只需减去日期并使用CURRENT DATE

SELECT EMPNO, FIRSTNME, LASTNAME, JOB, BIRTHDATE, 
    (CURRENT DATE - BIRTHDATE)/365.25 AS AGE 
FROM EMPLOYEE 
WHERE JOB LIKE '%R'

答案 1 :(得分:0)

在DB2中,减去两个日期的结果是“YYYYMMDD”形式的持续时间 例如,2015年4月23日,以下内容:

select current_date - '1972-02-24' as myage
from sysibm.sysdummy1                      

返回:430128
年= 43
年 月份= 1 天= 28

所以你想要的是:

SELECT EMPNO, FIRSTNME, LASTNAME, JOB, BIRTHDATE, 
    int((CURRENT DATE - BIRTHDATE) / 10000) AS AGE 
FROM EMPLOYEE 
WHERE JOB LIKE '%R'