转换时间字段的最后三位数字

时间:2014-02-14 10:57:15

标签: sql sql-server sql-server-2005

我需要将最后三位数字从000

转换为2013-11-22 13:21:35.297

数据类型为datetime

有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:2)

DATEADD / DATEDIFF是我用来将日期时间值舍入到特定粒度的常用方法:

select DATEADD(second,DATEDIFF(second,'20010101','2013-11-22T13:21:35.297')
                                     ,'20010101')

对于大多数粒度级别,您只能使用0代替'20010101',但不幸的是,当我们使用second和当前日期时,会导致溢出。 '20010101'可以是任何相对较近的固定日期。


作为更新,它将是:

UPDATE account
SET logdatetime = DATEADD(second,DATEDIFF(second,'20010101',logdatetime)
                                                ,'20010101')

答案 1 :(得分:0)

对于SQL Server 2008或更高版本,这非常有效。关键是datetime2数据类型以零精度指定,因此十进制秒被截断。

Declare @chk datetime = '2013-11-22 13:21:35.297';

select convert(datetime,convert(datetime2(0),@chk));