在SQL Server 2005中的日期时间
declare @date as datetime
set @date = getdate()
Select Cast(Floor(Cast(@date as float)) as DateTime)
一个替代方案可以完成同样的任务,具体取决于您在何处使用它。这也可以用在一个完整的脚本不可能的视图中。
SELECT CONVERT(DATETIME, FLOOR(CONVERT(FLOAT, GETDATE())))
我修改了前一个,使其看起来与你的相似。谢谢。 – Rabin 2011-05-16 10:17:35
在2k8之前,我总是;
DATEADD(DAY, DATEDIFF(DAY, 0, datecol), 0)
哎呀,看起来我错过了这个答案,当我贴我的。你说的是“2k8之前”,但是在性能比较中,我将链接(下面)的日期投射出现为最慢的可用选项(在CPU时间中);你在做一些不同的事情吗?或者它只是不够重要? – Tao 2011-05-18 08:33:01
就我个人而言,我认为在大多数情况下,像这样的转换的性能差异并不重要,在2k8中,您可以将'cast(getdate()as date)' – 2011-05-18 09:05:26
由于所有以前的答案都是一样的,我会添加其他“好”的选择,我知道的:
SELECT DateAdd(Day, 0, DateDiff(Day, 0, GetDate()))
这是由一些/许多人首选,因为它不依赖于DateTime/SmallDateTime中整数表示日期未记录/不受支持的事实。
在SqlServerCentral.com论坛上有关于此主题的有趣讨论,但我无法很快找到链接,对不起。
UPDATE:盖尔肖贴的常用方法一个很好的快速性能对比(这显然是一个最快,但只能通过V少量):http://sqlinthewild.co.za/index.php/2008/09/04/comparing-date-truncations/
非常感谢你。 – Rabin 2011-05-16 10:16:38