0

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

每年我可以使用

CURRENT_TIMESTAMP - [BIRTHDATE] AS AGETHISYEAR

但我也想知道一个人的十进制形式的年龄,即 34,4,具体取决于人的生日和当前日期。

在 SQL Server 中,列类型为[BIRTHDATE]is DATETIME,而在 DB2 中,列类型为DATE

格式是YYYY-MM-DD

有没有办法做到这一点?

问候, 阿尔弗雷德

4

1 回答 1

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

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

于 2014-10-24T12:43:55.857 回答