从特定日期开始过去12个月非常简单,可以通过SQL-server中的以下命令检索。答案是2014-08-17。
select Dateadd(Month, -12, '2015-08-17')
我想要的是过去12个月,但结束于2014-08- 01 (在上述情况下),而不是在月中的任何地方。
答案 0 :(得分:5)
使用DATEADD
和DATEDIFF
:
DECLARE @ThisDate DATE = '20150817'
SELECT DATEADD(YEAR, -1, DATEADD(MONTH, DATEDIFF(MONTH, '19000101', @ThisDate), '19000101'))
有关更常见的日期例程,请参阅Lynn Pettis撰写的article。
在WHERE
条款中使用:
DECLARE @ThisDate DATE = '20150817'
SELECT *
FROM <your_table>
WHERE
<date_column> >= DATEADD(YEAR, -1, DATEADD(MONTH, DATEDIFF(MONTH, '19000101', @ThisDate), '19000101'))
答案 1 :(得分:3)
SELECT dateadd(month,datediff(month,0,getdate())-12,0)
结果是
-----------------------
2014-08-01 00:00:00.000
所以where子句应该是
WHERE datecol >=dateadd(month,datediff(month,0,getdate())-12,0)
从去年同月的01月1日开始获取所有数据
答案 2 :(得分:1)
如果你想要去年当月第一天以来的所有记录,那么你可以使用:
where <somedate> >= dateadd(day, 1 - day(dateadd(month, -12, getdate()),
dateadd(month, -12, getdate()))
对于除了 2月29日以外的所有日子,你可以使用更简单的:
where <somedate> >= dateadd(day, 1 - day(getdate()),
dateadd(month, -12, getdate))