我正在处理SQL Server 2005上的清除过程,该过程必须删除表格中所有行的时间超过1年以前+本年度的时间。如何使用SQL获取今年第一秒的日期?
例如:如果我今天执行2009年6月10日它已删除行比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
(我错误预期)。
有人可以帮我吗?
嗯..有趣的是,这个问题的其他答案(撰写本文时)有8个upvotes,而我的只有1个和1个投票,但我的答案是唯一的解决方案。 (即今天的日期(2009年10月6日)结果是2008-01-01 00:00:00,而Raj的解决方案返回2009-01-01 00:00:00) – CraigTP 2009-10-06 17:23:49
我喜欢SELECT CONVERT(DATETIME,CAST( YEAR(GETDATE()) - 1 AS VARCHAR)+'0101',112)或SELECT CONVERT(DATETIME,CAST(YEAR(GETDATE()) - 1 AS VARCHAR),112)更多,因为它指定了输入格式。 – LukLed 2009-10-06 17:50:41
@CraigTP:我自己提倡你,因为你有正确的答案。我改变了我的反映更正 – 2009-10-07 13:08:43