sce*_*aux 6 sql t-sql sql-server
我正在研究SQL Server 2005上的清除过程,它必须删除早于1年前的表中的所有行+当前年份的时间.
例如:如果我在今天6-10-2009执行该程序,则必须删除早于2008-01-01 00:00的行(即包括2007年和向后).
我如何获得一年中第一秒的日期?
我试过这个:
select cast((DATEPART(year, getdate()) -1 )AS DATETIME);
但我得到1905-07-02 00:00:00.000
而不是2008-01-01 00:00
(正如我错误预期的那样).
有谁可以帮助我吗?
Raj*_*ore 11
编辑:这是当年的回归,当时的问题是前一年.代码已经更正以反映这一点.
用这个
select DATEADD(yy, DATEADD(yy, DATEDIFF(yy,0,getdate()), 0), -1)
Run Code Online (Sandbox Code Playgroud)
或者使用你的变量:
select DATEADD(yy, DATEADD(yy, DATEDIFF(yy,0,@YourDateTimeValue), 0), -1)
Run Code Online (Sandbox Code Playgroud)
这将有效:
select cast('01 jan' + CAST((DATEPART(year, getdate())-1) as varchar) AS DATETIME);
Run Code Online (Sandbox Code Playgroud)
(我知道这不是"最佳"解决方案,并且可能涉及更多的演员而不是必要,但它有效,并且对于如何使用它似乎是一个务实的解决方案!)