Обновление
Мне вдруг пришло в голову, что [Sch Dep Time]
должен содержать компонент времени значения dataTime
, хранящегося в [Journey and Details.schdeptime]
, с точностью до минуты.Для этого вам не нужно возиться с конкретными частями даты и конкатенацией строк, все, что вам нужно сделать, это использовать convert
:
[Sch Dep Time] = CONVERT(char(5), [Journey and Details.schdeptime], 108)
Возвращается стиль 108 hh:mm:ss
(24 часа), и используя char(5)
, вы просто берете первые 5 символов этой строки - hh:mm
.
Первая версия
У вас слишком сложные вещи.Попробуйте вместо этого использовать старый right('00' + val, 2)
трюк:
[Sch Dep Time] = RIGHT('00' + CAST(DATEPART(Hour,[Journey and Details.schdeptime]) AS VARCHAR(2)), 2) + ':' +
RIGHT('00' + CAST(DATEPART(Minute,[Journey and Details.schdeptime]) AS VARCHAR(2)), 2)
Расширение:
Вы начинаете с конкатенации начальных нулей к нужной строке.
Предположим, у вас есть строка, представляющаячисло, которое всегда должно иметь 4 цифры, но это может быть 1234 или 0003 - поэтому вы начинаете с выполнения '0000' + @YourNumber
.
Затем вы используете RIGHT
, чтобы обрезать любые нежелательные нули - предположим, у вас теперь есть 000023
,но вы хотите 0023
- вы делаете RIGHT('000023', 4)
, чтобы получить последние 4 символа.