繁体   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