如何获取从当前日期算起的最后 12 个月以及截至检索到的最后一个月 1 日的额外天数

问题描述 投票:0回答:3

获取特定日期的过去 12 个月很容易,可以通过 SQL-server 中的以下命令检索。它的答案是2014-08-17。

select Dateadd(Month, -12, '2015-08-17')

我想要的是获取过去 12 个月但结束于 2014-08-01(在上述情况下)而不是月中的任何位置。

sql sql-server sql-server-2008
3个回答
14
投票
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日开始的所有数据


8
投票

使用

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'))

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))
    
© www.soinside.com 2019 - 2024. All rights reserved.