[英]How to calculate exact number of years between two dates
我有兩列,Birth_Date 和 Publish_Date。 我需要計算 Publish_Date 和 Birth_Date 之間的年數(考慮月份)。 (日期,格式'YYYYMMDD')
我曾嘗試使用 DATEDIFF,但它似乎並沒有解決這個問題。 此處的解決方案: 如何根據出生日期和 getDate() 計算年齡(以年為單位)
, CASE WHEN dateadd(year, datediff (year, Brth_Dt, Pub_Dt), Brth_Dt) > Pub_Dt
THEN datediff(year, Brth_Dt, Pub_Dt) - 1
ELSE datediff(year, Brth_Dt, Pub_Dt)
END as Brth_Yrs
錯誤:SELECT 失敗。 3706: 語法錯誤:期望在 '(' 和 'year' 關鍵字之間有一些東西。
還從如何計算兩個日期之間的年齡/年數中嘗試了這個解決方案
, DATEDIFF(YEAR, Brth_Dt, Pub_dt) +
CASE
WHEN MONTH(@Pub_dt) < MONTH(Brth_Dt) THEN -1
WHEN MONTH(@Pub_dt) > MONTH(Brth_Dt) THEN 0
ELSE
CASE WHEN DAY(@Pub_dt) < DAY(Brth_Dt) THEN -1 ELSE 0 END
END) As Brth_Yrs
錯誤:SELECT 失敗。 3706: 語法錯誤:期望在 '(' 和 'YEAR' 關鍵字之間有一些東西。
誰能幫忙寫這個?
嘗試下面的 SQL QUERY 查詢,使用 DATEDIFF function 查找兩個日期之間的年份差異。
SELECT DATEDIFF(year, Brth_Dt, Pub_Dt) AS date_difference FROM Employee;
Teradata 不支持 DATEDIFF、DATEADD 函數。
這是計算當前日期年齡的一種方法。 我們使用 Teradata 的 EXTRACT function 將日期轉換為 YYYYMMDD 格式的整數以提取日期部分; 然后我們簡單地從當前日期中減去 DOB。
您可以將 CURRENT_DATE 替換為 Publish_Date,將 DOB 替換為 Birth_Date。
((EXTRACT(YEAR FROM CURRENT_DATE)*10000+
EXTRACT(MONTH FROM CURRENT_DATE)*100+
EXTRACT(DAY FROM CURRENT_DATE)) -
(EXTRACT(YEAR FROM DOB)*10000+
EXTRACT(MONTH FROM DOB)*100+
EXTRACT(DAY FROM DOB))
)/10000 as Age
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.