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

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)

  • 这是SQL Server中一个相当标准的东西,每个人都应该学习,这里有一个链接,显示如何为年,月,日,小时,分钟... http://stackoverflow.com/questions/85373/floor -a-日期在-SQL服务器 (5认同)

Cra*_*gTP 5

这将有效:

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

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