簡體   English   中英

使用代表年、月和日的 3 列計算年齡

[英]Calculate age using 3 columns representing year, month and date

我有 3 列 dob_year、dob_month、dob_day,所有 3 列都是數據類型 nvarchar(50)。 當我嘗試用 gatedate() 計算年齡比較 dob(出生日期)時,我會收到消息“從字符串轉換日期和/或時間時轉換失敗。”。

DATEDIFF(yy, (s.dob_year+'-'+s.dob_month+'-'+s.dob_day), GETDATE())as age, 

我嘗試將相同的 function 與 convert() 或 cast() 函數一起使用,我會得到相同的消息。

您的語法表明您正在使用 SQL 服務器。 如果您的值都可以,您可以使用:

datefromparts(s.dob_year, s.dob_month, s.dob_day)

但是,如果您有錯誤的組合(例如 2 月 31 日),那么您需要一個TRY_ 為此,我建議:

try_convert(date, convert(varchar(8), s.dob_year * 10000 + s.dob_year * 100 + s.dob_day))

這會將三列的格式設置為 YYYYMMDD,然后可以輕松地將其轉換為日期。

暫無
暫無

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

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