计算SQL Server和DB2中两个日期之间的差异

时间:2014-10-24 12:13:16

标签: sql sql-server db2 date-difference

我知道有很多方法可以计算不同数据库中日期之间的差异。我的问题是我需要一种方法来使用相同的SQL查询在SQL Server和DB2中都能正常工作。

每年我都可以使用

CURRENT_TIMESTAMP - [BIRTHDATE] AS AGETHISYEAR

但我也想知道一个十进制年龄的人,即34,4岁,视乎人的生日和当前日期而定。

在SQL Server中,[BIRTHDATE]的columntype是DATETIME,在DB2中,列类型是DATE

格式为YYYY-MM-DD

有办法做到这一点吗?

此致 阿尔弗雷德

1 个答案:

答案 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

分数年会复杂得多。当然,每个数据库都有自己更合理的方法来获得你想要的东西。方法不同。