如何使用SQL获取一年中第一秒的日期?

时间:2009-10-06 15:20:49

标签: sql sql-server tsql

我正在研究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(因为我错误预期)。

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:11)

编辑:这是当年的回归,当时的问题是前一年。代码已经更正以反映这一点。

使用此

select DATEADD(yy, DATEADD(yy, DATEDIFF(yy,0,getdate()), 0), -1)

或者使用你的变量:

select DATEADD(yy, DATEADD(yy, DATEDIFF(yy,0,@YourDateTimeValue), 0), -1)

答案 1 :(得分:5)

这将有效:

select cast('01 jan' + CAST((DATEPART(year, getdate())-1) as varchar) AS DATETIME);

(我知道这不是“最好的”解决方案,可能涉及更多的演员而不是必要,但它有效,而且如何使用它似乎是一个务实的解决方案!)

答案 2 :(得分:0)

SELECT DATEADD(year, DATEDIFF(year, 365, GETDATE()), 0)