我正在尝试使用以下代码从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。
答案 0 :(得分:0)
假设您正在使用DB2
,它不支持DATEDIFF
或GETDATE()
。相反,只需减去日期并使用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'