我有这个查询,如果我是正确的,它应该获取过去一个月的数据。
select * from INTRANET.DBO.CSEReduxResponses where status=1 and execoffice_status=0
AND MONTH([approveddate])= DATEADD(MONTH,-1,GETDATE())
但它没有返回任何东西。 我知道通过查看行存在的数据:
为什么select语句没有返回任何内容?
答案 0 :(得分:2)
您需要比较两个日期的月份和年份组件。正确的查询如下:
select * from INTRANET.DBO.CSEReduxResponses where status=1 and execoffice_status=0
AND MONTH([approveddate])= MONTH(DATEADD(MONTH,-1,GETDATE()))
AND YEAR([approveddate])= YEAR(DATEADD(MONTH,-1,GETDATE()))
答案 1 :(得分:2)
如果您想要上个月的所有内容,您必须执行以下操作:
SELECT *
FROM INTRANET.DBO.CSEReduxResponses
WHERE status=1
AND execoffice_status=0
AND [approveddate] between
DATEADD(DAY, (DATEPART(DAY, getdate())*-1)+1,DATEADD(MONTH,-1,GETDATE())) --gets the first day of the previous month
AND
DATEADD(DAY, (DATEPART(DAY, getdate())*-1), GETDATE()) --gets the last day of the previous month