我不是一个sql人,并且已经成为一个人:\
我试图在没有当月的情况下获得前3个月的数据。
WHERE DATEPART(m, start_date) = DATEPART(m, DATEADD(m, -3, getdate()))
and DATEPART(yyyy, start_date) = DATEPART(yyyy, DATEADD(m, -3, getdate()))
这只能从1月份获得数据,我需要Jan-Mar。
WHERE start_date >= dateadd(mm,datediff(mm,0,getdate())-3,0)
这让我从1月1日开始 - 现在。
所以现在我卡住了,不知道该怎么做。 mssql ver:2012
提前感谢您的帮助。
答案 0 :(得分:3)
WHERE DateColumn >= DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()) -3,0)
AND DateColumn < DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()) ,0)
这将返回2015-01-01
和2015-03-31
答案 1 :(得分:1)
你可以试试这个:
Where datediff(mm, start_date, getdate()) in (1, 2, 3)
答案 2 :(得分:0)
这有帮助吗?:
WHERE start_date BETWEEN DATEADD(m, -3, getdate()) AND DATEADD(m, -1, getdate())
答案 3 :(得分:0)
您可以使用以下内容:
WHERE MONTH(start_date)>= MONTH(getdate())- 3 AND MONTH(start_date)< MONTH(getdate())
答案 4 :(得分:0)
您可以构建一个字符串并将其转换为日期......例如:
WHERE start_date >= dateadd(month,-3, convert(datetime,convert(varchar(10),Month(GETDATE())) + '/01/' + convert(varchar(10),Year(GETDATE()))))
and start_date < convert(datetime,convert(varchar(10),Month(GETDATE())) + '/01/' + convert(varchar(10),Year(GETDATE())))
答案 5 :(得分:0)
SELECT DATEADD(MONTH,DATEDIFF(MONTH,0,DATEADD(MONTH,-3,GETDATE())),0) -- FIRST DAY OF MONTH, THREE MONTHS AGO
,DATEADD(MILLISECOND,-3,DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)) -- LAST DAY OF LAST MONTH