日期的时间相加哪里出的问题?
我想给一个日期(只有日期没有时分秒)例如题中的‘2007-10-1’把当前时间的时分秒加给它,如果做了如下的操作:
declare
@now datetime, --定义了一个时间
@hms datetime, --要提取时分秒的当前时间
@h int, --小时
@m int, --分
@s int, --秒
@ms int --毫秒
set @hms=getdate() --@hms中存入当前日期时间
select @hms hms
set @now='2007-10-1' --给@now赋一个任意值,最后我要得到它不光有日期还要有时间的显示
select @now now,@hms hms
----
set @h=datepart(hour,@hms) --提取小时
select @h h
set @now=dateadd(hour,@h,@now) --加上
set @m=datepart(minute,@hms) --提取分钟
select @m m
set @now=dateadd(minute,@m,@now)
set @s=datepart(second,@hms) --提取秒
select @s s
set @now=dateadd(second,@s,@hms)
set @ms=datepart(millisecond,@hms) --提取毫秒
select @ms ms
set @now=dateadd(millisecond,@ms,@now)
--显示最后结果
select @hms
select @now now
go
得到的值很奇怪
比如
开始时候now是2007-10-1
getdate()=2007-10-17 20:23:50.590
但是相加之后now的值成了
2007-10-1 20:24:41.180
请问这多出来一点时间怎么回事?
------解决方案--------------------SQL code
declare @date datetime,@getdate datetime,
@h int, --小时
@m int, --分
@s int, --秒
@ms int --毫秒
select @getdate=getdate(),@date='2007-10-1'
select @h=datepart(hh,@getdate),@m=datepart(n,@getdate),@s=datepart(s,@getdate),@ms=datepart(ms,@getdate)
select @getdate as 当前时间,dateadd(ms,@ms,dateadd(s,@s,dateadd(n,@m,dateadd(hh,@h,@date)))) as 计算时间
当前时间 计算时间
------------------------------------------------------ ------------------------------------------------------
2007-10-18 20:38:43.043 2007-10-01 20:38:43.043
(所影响的行数为 1 行)