如何计算SQL中两个日期之间的年、月、日的持续时间/年龄? instituitiondate 和 nextdate 具有“日期”数据类型?
这是我试过的:
SELECT
instituitiondate,
MAX(NextDate) AS LastDate,
DATEDIFF (YEAR, InstituitionDate, MAX(NextDate)) Years,
DATEDIFF (MONTH, InstituitionDate, MAX(NextDate)) Months,
DATEDIFF (DAY, InstituitionDate, MAX(NextDate)) Days
FROM
Main_Cause_List
WHERE
CaseNo = '372/4/2020'
GROUP BY
InstituitionDate;
答案 0 :(得分:0)
我不知道您的问题是否有确切答案,但这应该是一个很好的近似:
SELECT
instituitiondate,
MAX(NextDate) AS LastDate,
floor(datediff(day, InstituitionDate, MAX(NextDate)) / 365.25) as Years,
floor(datediff(day, InstituitionDate, MAX(NextDate)) / 30.4375) % 12 as Months,
floor(datediff(day, InstituitionDate, MAX(NextDate)) % 30.4375) as Days
FROM
Main_Cause_List
WHERE
CaseNo = '372/4/2020'
GROUP BY
InstituitionDate;
它计算年龄时考虑了平均每年 365.25 天和每月 30.44 天。
已编辑:将每月天数从 30.44 更改为 30.4375,因为 30.4375 * 12 = 365.25,消除了计算年份与相应月份和剩余天数之间的非常小的不一致。< /p>
答案 1 :(得分:0)
SELECT
instituitiondate,
MAX(NextDate) AS LastDate,
floor(datediff(day, InstituitionDate, MAX(NextDate)) / 365.25) as Years,
floor(datediff(day, InstituitionDate, MAX(NextDate)) / 30.44) % 12 as Months,
floor(datediff(day, InstituitionDate, MAX(NextDate)) % 30.44) as Days
FROM
Main_Cause_List
WHERE
CaseNo = '372/4/2020'
GROUP BY
InstituitionDate;