Как сохранить временную часть значения datetime (SQL Server)?
Вот что я использую для получения строки HH:MM
:
CONVERT(varchar(5), time_requested, 108)
Я думаю, что может быть более элегантный способ, возможно даже более эффективный (см. аналогичный вопрос в Как удалить временную часть значения datetime (SQL Server)?).
Требования:
- конечный результат должен быть легко конвертирован в строку (чтобы можно было связать какое-либо поле
time_created
с полем, таким как date_created
).
- должны быть охвачены следующие 2 случая:
HH:MM
и HH:MM:SS
.
Ответы
Ответ 1
Declare @D datetime = GetDate() -- Data Type could be Time as well
Select CONVERT(varchar(8), @D, 108) -- for HH:MM:SS 11:27:26
Select CONVERT(varchar(5), @D, 108) -- for HH:MM 11:27
Не удалось добавить, что если 2012+ вы также можете использовать Format()
Declare @D DateTime = '2016-10-22 13:30:25'
Select Format(@D,'HH:mm') -- 13:30
Select Format(@D,'hh:mm:ss tt') -- 01:30:25 PM
Ответ 2
Это слишком долго для комментария.
Ваш метод в порядке. Он создает строковое представление значения.
Вы также можете преобразовать в тип данных time
:
select cast(time_requested as time)
Но обратите внимание, что это "формат-меньше" - он содержит часы, минуты, секунды и доли секунд. Таким образом, ваш метод, вероятно, лучший подход.