SQL从去年开始到同一天

时间:2016-01-21 18:32:45

标签: sql sql-server tsql

我希望从日期时间获取当前日期。我知道最好的方法是通过

DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)

然而,如果我想要从去年获得相同的一天,我最好还是去做

解决方案1 ​​

DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), -365)

OR解决方案2

DATEADD(YEAR, -1, DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0))

是否有任何时候解决方案1不起作用?

2 个答案:

答案 0 :(得分:3)

解决方案2会自动减去366天的闰年。

解决方案1没有;如果涉及到闰年,你可能会接下来的一天。

答案 1 :(得分:0)

从SQL Server 2008开始,从datetime获取当前日期的最佳方法是:

CAST(GETDATE() as DATE)

减去一年的最佳方法是使用YEARMONTH

DATEADD(MONTH, -12, CAST(GETDATE() as DATE))
DATEADD(YEAR, -1, CAST(GETDATE() as DATE))

并非所有日子都有365天,因此这是不恰当的计算。