我知道有很多方法可以计算不同数据库中日期之间的差异。我的问题是我需要一种方法来使用相同的SQL查询在SQL Server和DB2中都能正常工作。
每年我都可以使用
CURRENT_TIMESTAMP - [BIRTHDATE] AS AGETHISYEAR
但我也想知道一个十进制年龄的人,即34,4岁,视乎人的生日和当前日期而定。
在SQL Server中,[BIRTHDATE]
的columntype是DATETIME
,在DB2中,列类型是DATE
。
格式为YYYY-MM-DD
有办法做到这一点吗?
此致 阿尔弗雷德
答案 0 :(得分:1)
我认为编写可在两个数据库中运行的函数的唯一方法是使用year()
,month()
和day()
,或者自己编写函数。两个数据库之间的日期函数没有太多重叠。
例如,要获得两个日期之间的完整年份,您可以使用:
select (year(CURRENT_TIMESTAMP) - year(birthdate) +
(case when month(CURRENT_TIMESTAMP) * 100 + day(CURRENT_TIMESTAMP) <
month(birthdate) * 100 + day(birthdate)
then -1 else 0
end)
) as AgeInYears
分数年会复杂得多。当然,每个数据库都有自己更合理的方法来获得你想要的东西。方法不同。