Как я могу изменить код ниже, чтобы дополнить минуты и секунды 0, если это одна цифра? - PullRequest
3 голосов
/ 22 ноября 2011

Код ниже делает именно то, что я хочу, чтобы преобразовать время в формат, который подходит для моих нужд. Однако, когда минуты и секунды представлены одной цифрой, формат выглядит не очень хорошо. Я хотел бы настроить код, чтобы заполнить минуты и секунды, где это необходимо. Какие-либо предложения? Опять же, я бы хотел как можно больше придерживаться существующего кода.
Спасибо!

SELECT SUBSTRING(CONVERT(CHAR(14), DateTimeRaw, 100), 13, 2)  + ':' + 
CONVERT(nvarchar, DATEPART(minute, DateTimeRaw)) + ':' + 
CONVERT(nvarchar, DATEPART(second, 
DateTimeRaw)) + '.' + CONVERT(nvarchar, DATEPART(ms, DateTimeRaw) / 100)
 + ' ' + CONVERT(nvarchar, CASE WHEN datepart(hour, DateTimeRaw) 
< 12 THEN 'AM' ELSE 'PM' END)   AS AGMPLUSMSTIME
FROM RAW

Ответы [ 2 ]

4 голосов
/ 22 ноября 2011
RIGHT('00' + CONVERT(nvarchar, DATEPART(minute, DateTimeRaw)), 2)

В основном: объединить 2 нуля с вашим значением времени, в итоге получится что-то вроде 001, 0023 или 0059, затем взять 2 самых правых символа, оставив вам 01,23, 59 соответственно.

0 голосов
/ 22 ноября 2011

Как насчет этого:

select right(stuff(convert(varchar(26), getdate(), 9), 23,2, ' '), 13)

Результат:

 4:35:15:4 PM

Я использовал getdate () вместо вашего поля, просто в качестве примера

...