我正在尝试获取上个月的第一天和最后一天。我真正需要的是一个BETWEEN
子句的范围,所以我需要第一天的第一秒和最后一天的最后一秒。
这是我一直在使用的代码:
set @startDate = DATEADD(mm, DATEDIFF(mm,0,DATEADD(mm, -1, getdate())), 0)
set @endDate = dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate() ), 0))
但是,对于今天,这实际上是返回 2011 年 4 月 1 日和 2011 年 5 月 1 日,这并不完全准确。我想获得 2011 年 4 月 30 日的最后一秒作为 endDate。
我一直在谷歌搜索,我看到了很多不同的方法来获得一个月的第一天/最后一天。即使在 SO 本身上,我也看到这个问题有许多不同的变体,有许多不同的答案。我想编制一个所有方法的列表来实现这一点,然后确定哪个是“最好的”(基于简单性和效率)
(我应该补充一点,我正在使用 sql server 2000)
编辑:
重新结束日期错误 - 这段代码实际上是正确的,问题只是那@endDate
是一个小的日期时间。我将其更改为日期时间,现在可以正常工作