日期:2014-05-18  浏览次数:20763 次

如何让毫秒进行四舍五入到秒?
没办法,没找到一个更好办法,除了单独毫秒进行单独处理后,再判定是否可五入。

事因起头是:要判断一个总分数据库的一致性,总部记录中的日期保存是的“2011-12-12 20:04:26.000”;而分部记录中的日期保存的“2011-12-12 20:04:25.687”。


如何让两者认为是一致的

------解决方案--------------------
SQL code
select getdate(),convert(varchar(19),dateadd(ms,500,getdate()),120)
/*
----------------------- -------------------
2011-12-12 22:30:19.060 2011-12-12 22:30:19

(1 行受影响)

                        
----------------------- -------------------
2011-12-12 22:30:30.967 2011-12-12 22:30:31

(1 行受影响)

*/

------解决方案--------------------
SQL code
declare [date] datetime='2011-12-12 20:04:25.687'
select (case datepart(ms,[date])>500 then dateadd(ss,1,[date]) else [date] end)

------解决方案--------------------
探讨
SQL code
declare [date] datetime='2011-12-12 20:04:25.687'
select (case datepart(ms,[date])>500 then dateadd(ss,1,[date]) else [date] end)

------解决方案--------------------
SQL code

declare @x1 datetime2,@x2 datetime2
declare @y1 datetime,@y2 datetime

select 
@x1='2011-12-12 20:04:25.499',
@x2='2011-12-12 20:04:25.501'

select 
@y1=dateadd(s, case when datepart(ms,@x1)<500 then 0 else 1 end, 
cast(convert(varchar,@x1,23)+' '+convert(varchar,@x1,108) as datetime)),
@y2=dateadd(s, case when datepart(ms,@x2)<500 then 0 else 1 end, 
cast(convert(varchar,@x2,23)+' '+convert(varchar,@x2,108) as datetime))

select @y1 'y1',@y2 'y2'

y1                      y2
----------------------- -----------------------
2011-12-12 20:04:25     2011-12-12 20:04:26

(1 row(s) affected)