获取特定日期的过去 12 个月很容易,可以通过 SQL-server 中的以下命令检索。它的答案是2014-08-17。
select Dateadd(Month, -12, '2015-08-17')
我想要的是获取过去 12 个月但结束于 2014-08-01(在上述情况下)而不是月中的任何位置。
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)
获取去年同月1月1日开始的所有数据
使用
DATEADD
和DATEDIFF
:
DECLARE @ThisDate DATE = '20150817'
SELECT DATEADD(YEAR, -1, DATEADD(MONTH, DATEDIFF(MONTH, '19000101', @ThisDate), '19000101'))
有关更常见的约会惯例,请参阅 Lynn Pettis 的这篇文章。
要在
WHERE
子句中使用:
DECLARE @ThisDate DATE = '20150817'
SELECT *
FROM <your_table>
WHERE
<date_column> >= DATEADD(YEAR, -1, DATEADD(MONTH, DATEDIFF(MONTH, '19000101', @ThisDate), '19000101'))
如果你想要去年当月第一天以来的所有记录,那么你可以使用:
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))