Это обновляет все значения даты и времени, которые не имеют временных частей, с временными частями от HHMM
:
UPDATE atable
SET DateTime = DateTime + STUFF(HHMM, 3, 0, ':')
WHERE DateTime = DATEADD(day, DATEDIFF(day, 0, DateTime), 0)
Предполагается, что столбец HHMM
является строкой фиксированного формата, т. Е. У вас всегда есть 2-значные часы и 2-значные минуты в формате ЧЧММ, например, '1400'
или '0825'
. Запрос вставляет :
между частями времени и добавляет полученное время (представленное в виде строки) к значению столбца даты-времени.
Если ЧЧММ является целым числом, ему может не хватать начального нуля или нулей для таких времен, как 08:00
или 00:05
(которые будут сохранены соответственно как 800
и 5
). Итак, перед вставкой двоеточия нам нужно привести значение в строку, отформатированную как HHMM
, например как это:
RIGHT(10000 + HHMM, 4)
Теперь мы можем передать это выражение вышеупомянутому запросу:
UPDATE atable
SET DateTime = DateTime + STUFF(RIGHT(10000 + HHMM, 4), 3, 0, ':')
WHERE DateTime = DATEADD(day, DATEDIFF(day, 0, DateTime), 0)