sql日期相减

最后两位数字小于或等于配置选项的值,世纪与截止年相同。
大于配置选项的值,世纪为前一个世纪。
DATEDIFF结果一致。
带正负号的整数。
等于跨边界数。

sql日期相减

结论: DATEDIFF函数计算两个日期差,用datepart定粒度,年月日算差,顺序反则结果负。

sql日期相减

说白了,DATEDIFF函数就是SQL里算日期差用的,直接减就行但更方便。

先说最重要的,比如去年我们跑那个电商报表,要算会员注册到复购的天数差,直接写DATEDIFF(day, registration_date, purchase_date)就行,去年那个项目跑了几万条数据,秒出结果。
另外一点,这个函数特别认顺序,像我们有一次搞错了参数顺序,结果算出负数还懵了半天——记住,要是start_date比end_date晚,结果就带负号。
还有个细节挺关键的,用行话说叫雪崩效应,其实就是一个字段日期格式乱七八糟,整个查询全崩了,所以跑之前最好用CAST统一格式,去年我们用这个骚操作躲过好几次坑。

说实话挺坑的,我一开始也以为负数是bug,后来发现是设计如此,等等,还有个事,如果你算跨年这种,它不会像Excel那样自动进位,比如从1 2 月3 1 日到1 月1 日,它只算1 天,这个点很多人没注意。

建议用的时候多跑跑数据量小的,先对齐正负号。