转换有关问题 时间类型 '2011-09-21 10:17:39.993' 带有毫秒的
转换问题 时间类型 '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比较 还是怎么弄啊
------解决方案--------------------
你可以参考如下:
我表中字段:时间类型 '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,原因大乌龟已经说过了。