回答
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/
- 1. 存储SQL Server 2005的日期时间
- 2. 使用SQL Server 2008和SQL Server 2005和日期时间
- 3. 在SQL Server 2005中按日期/时间查询
- 4. 在SQL Server 2005中无时间选择日期值
- 5. 在SQL Server 2005 Express中查询日期时间
- 6. 如何转换如'22/03/2005' 的日期时间在SQL Server
- 7. SQL Server 2005中的高精度日期/时间戳
- 8. 仅在SQL Server 2005中存储日期
- 9. 转换日期时间字段在SQL Server 2005
- 10. 插入日期时间到Sql Server 2005中
- 11. 在SQL Server中播放日期时间
- 12. 日期时间问题2005
- 13. SQL Server日期时间ss.mmmZ
- 14. 需要一个日期而不是日期时间在SQL Server 2005 with dateadd
- 15. 如何在SQL Server 2005中减去两个日期时间值的小时数
- 16. 更新日期时间在SQL Server 2000中的日期部分
- 17. SQL Server 2005日期时间(仅返回hh:mm)
- 18. SQL Server 2005自动更新日期时间列 - LastUpdated
- 19. Microsoft SQL Server 2005时间日期数据类型
- 20. Microsoft SQL Server 2005将日期/时间转换为字符串
- 21. SQL Server 2005日期时间戳记查询
- 22. SQL Server 2005 - 检查空日期时间值
- 23. 集料的日期的SQL Server 2005
- 24. 在SQL Server 2008日期时间varchar
- 25. 转换日期时间在SQL Server
- 26. 日期时间格式在SQL Server 2008
- 27. 操纵日期时间在SQL Server
- 28. 错误在转换日期时间从字符串在SQL Server 2005中
- 29. SQL Server日期时间和SQL
- 30. SQL Server日期时间间隔
非常感谢你。 – Rabin 2011-05-16 10:16:38