簡體   English   中英

如何計算兩個日期之間的確切年數

[英]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.

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