簡體   English   中英

SQL使用DateDiff查找年齡

[英]SQL Find Age using DateDiff


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'

您忘記了FROM (並且您的列名用單引號引起來,將其視為字符串文字):

select DATEDIFF("YYYY",DOB,DATE_OF_DEATH) 
FROM {tablename}
where ID= 'V465'

而且僅DATEDIFF並不是確定“年齡”的正確方法,因為

DATEDIFF("yyyy",'2001-12-01','2003-01-31')

將給您2而不是1

見一個方法在這里和其他在這里

該錯誤最有可能來自您的select語句中未包含表

select DATEDIFF(YY,DOB,DATE_OF_DEATH) AS AGE
  FROM TABLE_NAME 
 where ID= 'V465'
SELECT DATEDIFF(YY,'01-01-2001','12-31-2002')

在MSSQL上返回1

測試數據

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 ║
╚═════╝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM