(轻微邀请发表意见)
这是返回两个完整月前的第一个月的最有效/可接受的方式:
SELECT DATEADD(mm,-2,GETDATE() - DAY(GETDATE())) + 1
(轻微邀请发表意见)
这是返回两个完整月前的第一个月的最有效/可接受的方式:
SELECT DATEADD(mm,-2,GETDATE() - DAY(GETDATE())) + 1
不确定这是否更快,但是...
SELECT DATEADD(m, DATEDIFF(m, 0, GETDATE()) -2, 0)
计算与 '1900-01-01' 的月份差:
DATEDIFF(m, 0, GETDATE()) -- 1356
将差额添加到“1900-01-01”减去两个月
只有两个操作:
SELECT DATEADD(month,DATEDIFF(month,'20010301',GETDATE()),'20010101')
它利用两个固定日期之间的关系包括删除两个月,同时“规范化”日期以删除日期和时间信息。
这很好的地方在于,您可以使用它来实现其他难以正确完成的技巧,而无需跳过更多的障碍。比如两个月前一个月的最后一天:
SELECT DATEADD(month,DATEDIFF(month,'20010301',GETDATE()),'20010131')
即使那个月的天数少于 31 天,它也能把事情做好