【发布时间】:2012-08-14 07:58:00
【问题描述】:
我已经能够找到很多信息,用于从日期时间列(如this one)获取时间的字符串表示形式。
我需要从日期时间中取出时间部分,以便我可以对其进行一些数学运算,例如将其添加到另一个日期时间中。所以时间的字符串表示对我没有帮助。
但是我只找到了一个example,它将时间提取为数字类型值。即:
SELECT CAST(GETDATE() AS FLOAT) - FLOOR(CAST(GETDATE() AS FLOAT))
这个方法需要 两个 强制转换,我必须在超过 10,000 行上运行它。有没有类似于dateadd 方法从日期时间列中提取日期部分的方法,即:
select DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
我可以用来从日期时间列中获取时间并将其作为小数或日期时间返回?也许是一个使用较少铸造的解决方案?
我使用的是 SQL Server 2000。
【问题讨论】:
-
转换的目的是什么?
-
我必须将事件的时间值添加到仅日期值,以便我可以将其与另一个表进行比较作为连接的一部分。我必须从另一个包含事件类型的日期和时间的表中提取事件类型的时间值。
-
当你说“数值”时,请注意这必须是毫秒、分钟或其他时间值的计数,不是浮点数或小数,因为那些不不行!试试
SELECT Convert(datetime, Convert(decimal(38, 31), Convert(datetime, '2012-08-17 00:00:00.003')))。这产生2012-08-17 00:00:00.000。哎呀。float也有同样的问题。
标签: sql datetime sql-server-2000