我在表中有一个具有时间组件的日期时间列。
无论如何我可以将'2011-03-14 11:46:31'设置为'2011-03-14 00:00:00'?
答案 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())))