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