我希望从日期时间获取当前日期。我知道最好的方法是通过
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不起作用?
答案 0 :(得分:3)
解决方案2会自动减去366天的闰年。
解决方案1没有;如果涉及到闰年,你可能会接下来的一天。
答案 1 :(得分:0)
从SQL Server 2008开始,从datetime
获取当前日期的最佳方法是:
CAST(GETDATE() as DATE)
减去一年的最佳方法是使用YEAR
或MONTH
:
DATEADD(MONTH, -12, CAST(GETDATE() as DATE))
DATEADD(YEAR, -1, CAST(GETDATE() as DATE))
并非所有日子都有365天,因此这是不恰当的计算。