将MS添加到DateTime2

时间:2014-01-20 17:15:07

标签: sql sql-server

DECLARE @Date datetime2(7) = GETDATE()
        ,@Time time(7) = '02:02:00.0000007'
SELECT   @Date [DateTime2(7)], @Time [Time(7)], DATEADD(MS,DATEPART(MS,@Time),@Date) [new_DateTime2(7)]

输出

DateTime2(7)                Time(7)             new_DateTime2(7)
2014-01-20 17:13:02.1970000 02:02:00.0000007    2014-01-20 17:13:02.1970000

期望输出

DateTime2(7)                Time(7)             new_DateTime2(7)
2014-01-20 17:13:02.1970000 02:02:00.0000007    2014-01-20 19:15:02.1970007

如何将MS从时间(7)添加到datetime2(7)?上述查询似乎没有按预期工作。

谢谢

1 个答案:

答案 0 :(得分:1)

您要添加的是NanoSecond而不是MicroSecond,因此您需要将代码从MS更改为NS以获得所需的结果。

DECLARE @Date datetime2(7) = GETDATE()
    ,@Time time(7) = '02:02:00.0000007'
SELECT   @Date [DateTime2(7)], @Time [Time(7)], DATEADD(ns,DATEPART(ns,@Time),@Date) [new_DateTime2(7)]


SELECT   DATEPART(MS,@Time) --Result: 0
SELECT   DATEPART(NS,@Time) --Result: 700