2017-05-05 108 views
1
WHERE(DATEDIFF(MONTH, datecreated, GETDATE()) = +1) 

这应该怎么办?有人可以解释这个SQL代码吗?

+0

如果在几个月中的过期差异= 1 –

+0

+1解析为1,所以它表示WHERE(表达式)= 1.展开式:where(datecreated month - current month)= 1,则为true,否则为false。 – flaZer

+0

这个表达式不是可玩的。它不能在'datecreated'上使用索引查找。 –

回答

2

这是获取在上个日历月的一切。请注意,无论当前日期如何,这都是特定于上一个日历月。

为什么会出现这种情况? datediff()计算两个日期/时间值之间的边界的数量。在这种情况下,边界是一个月的开始/结束。所以,如果今天是2017-05-05,那么2017-04年的任何事物都有一个单一的边界。三月没有任何事情,五月没有任何事情。请注意,5月1日至5月31日的情况也是如此。

尽管这很方便,但我认为代码至少应该有一条评论,因为对于一个偶然的读者来说,这可能并不明显。

+0

非常感谢。 –

相关问题