2016-09-29 3 views

ответ

1

Во-первых, не сохраняйте значения даты/времени в качестве символов. Но вы можете их преобразовать и добавить:

select cast(datechar as datetime) + cast(right(timechar, 12) as time) 

Я только что понял. Я не помню, понимают ли данные по дате/времени по умолчанию дробные секунды. Ниже безопаснее:

select (convert(datetime, datechar, 121) + 
     convert(time, convert(datetime, timechar, 121)) 
     ) as datetimeval 
+0

Дополнения для разных типов данных? (дата и время) –

+0

@RaduGheorghiu. , , Я удивлен, что документация не лучше, но я нашел: «Операторы плюс (+) и минус (-) также могут использоваться для выполнения арифметических операций с значениями datetime и smalldatetime». Преобразование во времени должно гарантировать, что есть только компонент времени; Я думаю, что SQL Server преобразует его обратно в 'datetime'. –

0

После добавления 3-й столбец ([FullDate]), например, вы можете использовать следующий код:

UPDATE TABLE 
SET [FullDate] = DATEADD(SECOND, SECOND(TIME), DATEADD(MINUTE, MINUTE(TIME), DATEADD(HOUR, HOUR(TIME), DATE))) 

В качестве альтернативы, вы можете сделать, как указано @GordonLinoff, но убедитесь, что вы нанесли time на datetime. Итак, что-то вроде этого:

UPDATE TABLE 
SET [FullDate] = CAST([date] as DATETIME) + CAST([time] AS DATETIME) 
Смежные вопросы