为了账号安全,请及时绑定邮箱和手机立即绑定

如何删除日期时间值的时间部分(SQL Server)?

如何删除日期时间值的时间部分(SQL Server)?

九州编程 2019-10-25 14:59:13
这是我使用的:SELECT CAST(FLOOR(CAST(getdate() as FLOAT)) as DATETIME)我认为可能会有更好,更优雅的方式。要求:它必须尽可能快(转换越少越好)。最终结果必须是datetime类型,而不是字符串。
查看完整描述

3 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

Itzik Ben-Gan在DATETIME Calculations,第1部分(SQL Server Magazine,2007年2月)中介绍了执行这种转换的三种方法(最慢到最快;第二种和第三种方法之间的差异很小):


SELECT CAST(CONVERT(char(8), GETDATE(), 112) AS datetime)


SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)


SELECT CAST(CAST(GETDATE() - 0.50000004 AS int) AS datetime)

读者在杂志的四月号中提出了您的技巧(铸造成浮动)。据他介绍,它的性能可与上述第二种技术媲美。


查看完整回答
反对 回复 2019-10-25
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

你CAST- FLOOR- CAST似乎已经是最佳的方式,至少在MS SQL Server 2005中。


我见过的其他一些解决方案具有字符串转换功能,例如Select Convert(varchar(11), getdate(),101),它们的速度要慢10倍。


查看完整回答
反对 回复 2019-10-25
  • 3 回答
  • 0 关注
  • 923 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信