我正在尝试使用sysdate()
来提取上个月的数据。
DECLARE @firstOfLastMonth DATE;
SET @firstOfLastMonth = DATEADD(MONTH, DATEDIFF(MONTH, 0, SYSDATETIME())-1, 0);
SELECT ... FROM ...
WHERE dateColumn >= @firstOfLastMonth
AND dateColumn < DATEADD(MONTH, 1, @firstOfLastMonth);
这就是为什么你不想使用BETWEEN
的原因:
BETWEEN和魔鬼有什么共同之处?
要改掉的坏习惯:错误处理日期/范围查询
您是指当前服务器时间减去一个月?试试DATEADD函数:
dateadd(month, -1, sysdatetime())
如果您想选择某列的值是过去一个月的记录,您可以这样做:
SELECT foo
FROM bar
WHERE baz BETWEEN dateadd(month, -1, sysdatetime()) AND sysdatetime()