2014-01-20 8 views
0
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

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

То, что вы хотите добавить это наносекунды не микросекунды, так что вам нужно изменить в коде от 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 
+0

Doh! (Я чувствую, что мне нужно вернуться в начальную школу после прочтения этого ...) хе-хе .. Спасибо! Теперь пришло время выяснить, как добавить Time (7) в DateTime2 (7). – 007

+1

Всегда лучше «ВЫБРАТЬ», что когда-либо пытаешься сделать, прежде чем использовать его в действии, помогает проверить, что вы думаете о том, что происходит на самом деле. Я думаю, этот вопрос поможет вам с последней частью http://stackoverflow.com/questions/700619/how-to-combine-date-from-one-field-with-time-from-another-field-ms-sql- server –

+0

Спасибо, что сообщение имеет много ответов, которые, похоже, связаны с тем, что я пытаюсь сделать. Ура! – 007

Смежные вопросы