gpt4 book ai didi

tsql - 如何在 T-SQL 中用年、月、日计算年龄

转载 作者:行者123 更新时间:2023-12-03 06:07:21 26 4
gpt4 key购买 nike

在 T-SQL (SQL Server 2000) 中计算某人年龄(以年、月和日为单位)的最佳方法是什么?

datediff 函数不能很好地处理年份边界,而且将月份和日期分开也很麻烦。我知道我可以在客户端相对轻松地完成此操作,但我想在我的 stored procedure 中完成它.

最佳答案

这里有一些 T-SQL,可以为您提供自 @date 中指定的日期以来的年数、月数和天数。它考虑到 DATEDIFF() 在计算差异时不考虑具体月份或日期(因此 8/31 和 9/1 之间的月份差异为 1 个月),并使用减少结果的 case 语句来处理该差异,其中合适。

DECLARE @date datetime, @tmpdate datetime, @years int, @months int, @days int
SELECT @date = '2/29/04'

SELECT @tmpdate = @date

SELECT @years = DATEDIFF(yy, @tmpdate, GETDATE()) - CASE WHEN (MONTH(@date) > MONTH(GETDATE())) OR (MONTH(@date) = MONTH(GETDATE()) AND DAY(@date) > DAY(GETDATE())) THEN 1 ELSE 0 END
SELECT @tmpdate = DATEADD(yy, @years, @tmpdate)
SELECT @months = DATEDIFF(m, @tmpdate, GETDATE()) - CASE WHEN DAY(@date) > DAY(GETDATE()) THEN 1 ELSE 0 END
SELECT @tmpdate = DATEADD(m, @months, @tmpdate)
SELECT @days = DATEDIFF(d, @tmpdate, GETDATE())

SELECT @years, @months, @days

关于tsql - 如何在 T-SQL 中用年、月、日计算年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com