Fields || Data
ID || V465
DOB || 1946-09-05
DATE_OF_DEATH || 1974-05-11
我正在使用此SQL,但我收到错误。
select DATEDIFF("YYYY",'DOB','DATE_OF_DEATH') where ID= 'V465'
其SQL SERVER Management Studio R2和
错误:消息207,级别16,状态1,行2 列名称无效' ID'
答案 0 :(得分:5)
您忘记了FROM
(并用单引号将列名称包围起来,将其视为字符串文字):
select DATEDIFF("YYYY",DOB,DATE_OF_DEATH)
FROM {tablename}
where ID= 'V465'
单独DATEDIFF
不是确定“年龄”的正确方法,因为
DATEDIFF("yyyy",'2001-12-01','2003-01-31')
会为您2
而不是1
。
答案 1 :(得分:1)
该错误很可能来自于不包括select语句中的表
select DATEDIFF(YY,DOB,DATE_OF_DEATH) AS AGE
FROM TABLE_NAME
where ID= 'V465'
答案 2 :(得分:0)
SELECT DATEDIFF(YY,'01-01-2001','12-31-2002')
在MSSQL上返回1
答案 3 :(得分:0)
测试数据
DECLARE @TABLE TABLE(ID VARCHAR(20),DOB DATE, DATE_OF_DEATH DATE)
INSERT INTO @TABLE VALUES
('V465', '1946-09-05', '1974-05-11'),('V466', '1945-09-05', '2000-11-11'),
('V467', '1982-09-05', NULL),('V468', '1946-09-05', NULL)
<强>查询强>
SELECT DATEDIFF(YEAR,DOB, COALESCE(DATE_OF_DEATH, GETDATE())) AS AGE
FROM @TABLE
使用COALESCE
功能,如果有人没有死,你也可以计算他们的年龄。 COALESCE
函数将与死亡日期有所不同,如果列为空,则与今天的日期不同。并会给你以下结果。
<强>结果强>
╔═════╗
║ AGE ║
╠═════╣
║ 28 ║
║ 55 ║
║ 32 ║
║ 68 ║
╚═════╝