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

转换问题 时间类型 '2011-09-21 10:17:39.993' 带有毫秒的
我表中字段:时间类型 '2011-09-21 10:17:39.993' 带有毫秒的,由于我有个表中写了触发器,做更新操作时,会同时插入两个表,一个OLD(保存改之前内容),一个NEW(修改后内容), 这两表时间字典 有时有几毫秒的差距的,我要比较如 '2011-09-21 10:17:39.993' 和 '2011-09-21 10:17:40.005'是同一个时间。也就是在时间上 加100毫秒 '2011-09-21 10:17:39.993' + 100毫秒 我比较取 2011-09-21 10:17:40 到秒就可以得到了, 该怎么转换才好写这个条件啊。 是写把他转换成 数值型再加减100比较 还是怎么弄啊

------解决方案--------------------
你可以参考如下:

SQL code
declare @dt as datetime

set @dt = '2011-09-21 10:17:39.993'

select dateadd(ms,100,@dt)
/*
                                                       
------------------------------------------------------ 
2011-09-21 10:17:40.093

(所影响的行数为 1 行)
*/


select convert(varchar(19),dateadd(ms,100,@dt),120)

/*
                    
------------------- 
2011-09-21 10:17:40

(所影响的行数为 1 行)
*/

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

declare @t1 datetime
set @t1='2011-09-21 10:17:39.993'

declare @t2 datetime
set @t2='2011-09-21 10:17:40.001' --10:17:40.000 或 10:17:40.001

select datediff(ms,@t1,@t2)
/*
6
*/
--@t2为10:17:40.000 或 10:17:40.001时,结果都为6,原因大乌龟已经说过了。