Преобразование часа в 12-часовой формат после извлечения "часа" с использованием DatePart(час,Datetime)
У меня есть небольшая проблема, которую я пытаюсь решить. В настоящее время у меня есть поле даты и времени в моей базе данных. То, что я делаю, уже извлекает части HOUR, Minute и AM/PM из даты, так как я должен заполнить каждое значение в отдельном поле.
Вот как выглядит запрос:
Select 'Hour'=(SELECT DATEPART(HOUR, Date1)),
'Minute'=(SELECT DATEPART(MINUTE, Date1)),
'PM'= (CASE WHEN DATEPART(HOUR, Date1) > 11 THEN 'PM' ELSE 'AM' END)
from tblA
Так что здесь я могу иметь 3 значения. Однако проблема, которую я имею, является частью ЧАСА, по умолчанию отображается в 24-часовом формате. Есть ли способ конвертировать его в 12-часовой формат?
Я знаю, что я могу использовать формат = 100, чтобы преобразовать время в формат 12HR следующим образом:
select convert(varchar(20),GetDate(),100)
Однако, когда я применяю это только к значению "ЧАС", это не меняет формат. Есть ли другой способ сделать это?
Чтобы уточнить, если значение datetime в моей таблице: 2018-11-22 14:30:00.000
Я надеюсь получить результат, который выглядит следующим образом:
Hour Minute PM
2 30 PM
2 ответа
Вы можете использовать оператор по модулю.
CASE
WHEN DATEPART(HOUR, Date1) % 12 = 0 THEN
12
ELSE
DATEPART(HOUR, Date1) % 12
END
Попробуй это,
Declare
@Date1 dateTime;
Set @Date1 ='2018-11-22 14:30:00.000';
Select 'Hour'= Case When (SELECT DATEPART(HOUR, @Date1)) >12 Then (SELECT DATEPART(HOUR, @Date1))-12 Else (SELECT DATEPART(HOUR, @Date1)) End,
'Minute'=(SELECT DATEPART(MINUTE, @Date1)),
'PM'= (CASE WHEN DATEPART(HOUR, @Date1) > 11 THEN 'PM' ELSE 'AM' END)