这是我使用的: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)
读者在杂志的四月号中提出了您的技巧(铸造成浮动)。据他介绍,它的性能可与上述第二种技术媲美。
慕标琳琳
TA贡献1830条经验 获得超9个赞
你CAST- FLOOR- CAST似乎已经是最佳的方式,至少在MS SQL Server 2005中。
我见过的其他一些解决方案具有字符串转换功能,例如Select Convert(varchar(11), getdate(),101),它们的速度要慢10倍。
- 3 回答
- 0 关注
- 923 浏览
添加回答
举报
0/150
提交
取消