如何在Microsoft SQL Server 2016中实现DB2风格的日期数字表示?
在SQL Server 2016中实现DB2 DAYS函数的效果
DB2的DAYS()函数返回从公元0001年1月1日到目标日期的总天数(包含目标日期当天),在SQL Server 2016中可以通过DATEDIFF()函数结合加1的方式实现完全一致的效果:
等价实现代码
SELECT POSTING_DATE, DATEDIFF(day, '0001-01-01', POSTING_DATE) + 1 AS NUMBER_REPRESENTATION FROM core.env;
逻辑说明
- SQL Server的
DATEDIFF(day, start_date, end_date)返回的是两个日期之间的间隔天数(不含起始日期当天) - DB2的
DAYS()计算的是从0001-01-01到目标日期的总天数(包含目标日期),因此需要给DATEDIFF的结果加1来匹配这个逻辑 - 该方法支持SQL Server 2016及以上版本,覆盖的日期范围(0001-01-01至9999-12-31)与DB2的
DAYS()函数一致
内容的提问来源于stack exchange,提问作者chubbz
相关产品推荐
相关产品推荐

