我需要将最后三位数字从000
2013-11-22 13:21:35.297
数据类型为datetime
。
有人可以帮我这个吗?
答案 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));