在T-SQL的DATEDIFF函数中传入-1作为日期参数代表什么?
关于T-SQL代码中
-1的解释 在T-SQL里,整数可以隐式转换为datetime类型,转换规则是以1900-01-01作为基准日期:
- 正整数代表基准日期之后的天数
- 负整数代表基准日期之前的天数
你代码里传入DATEDIFF的-1,实际对应的日期是1899-12-31(也就是1900-01-01往前推1天)。
顺带拆解这段代码的逻辑
这段代码的作用是获取上个月的最后一天,分步来看:
DATEDIFF(MONTH, -1, GETDATE()):计算从1899-12-31到当前日期的月份跨度,得到当前日期所在月份相对于基准的总月份数- 减去1后,得到上个月相对于基准的总月份数
DATEADD(MONTH, 上述结果, -1):从1899-12-31开始加上对应月份数,最终得到上个月的最后一天
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

