SQL Server 2005中的日期时间

时间:2011-05-16 09:51:02

标签: sql-server-2005

我在表中有一个具有时间组件的日期时间列。

无论如何我可以将'2011-03-14 11:46:31'设置为'2011-03-14 00:00:00'?

4 个答案:

答案 0 :(得分:2)

declare @date as datetime

set @date = getdate()

Select  Cast(Floor(Cast(@date as float)) as DateTime)

答案 1 :(得分:2)

在2k8之前,我总是;

DATEADD(DAY, DATEDIFF(DAY, 0, datecol), 0) 

答案 2 :(得分:1)

由于以前的所有答案都是一样的,我会添加我知道的另一个“好”选项:

SELECT DateAdd(Day, 0, DateDiff(Day, 0, GetDate()))

这是一些/很多人的首选,因为它不依赖于未记录/不支持的事实,即日期由DateTime / SmallDateTime中的整数表示。

在SqlServerCentral.com论坛上有关于此主题的有趣讨论,但我无法快速找到链接,抱歉。

更新:Gail Shaw发布了常用方法的快速性能比较(这个显然是最快的,但只有少量):http://sqlinthewild.co.za/index.php/2008/09/04/comparing-date-truncations/

答案 3 :(得分:0)

根据您使用它的位置执行相同操作的替代方案。这也可以在视图等中使用,其中不能使用完整的脚本。

SELECT CONVERT(DATETIME, FLOOR(CONVERT(FLOAT, GETDATE())))