Конвертировать Int во время - PullRequest
1 голос
/ 23 октября 2019

Я пытаюсь преобразовать поле в нужный мне формат. Предполагается, что поле отслеживает время, но оно выполняется в военное время и имеет значение Int.

Может ли кто-нибудь помочь мне найти решение для этого

Мне нужносделайте это, чтобы я мог в конечном итоге отследить, сколько времени требуется записи для перехода из одного состояния в другое.

LTRIM(RIGHT(CONVERT(varchar, [POSTTIME], 100),7)) 

Я пробовал это, но не повезло.

вот пример того, чтозначения и на что я хотел бы изменить их:

945 = 9:45

1516= 3:16

Ответы [ 2 ]

1 голос
/ 24 октября 2019

Пожалуйста, попробуйте это решение, поскольку @Gordon Linoff предлагает решение, которое вы можете заархивировать ваши требования с помощью функции timefromparts(), вы также можете получить результат в соответствии с вашими потребностями, как я объяснил ниже.

Решение 1: Время с AM/PM.

DECLARE @IntValue INT  = 1516

SELECT CONVERT(VARCHAR, timefromparts(@IntValue / 100, @IntValue % 100, 0, 0, 0), 100)  AS Time

OutPut

enter image description here

Решение 2: Время без AM/PM.

DECLARE @IntValue INT  = 1516

SELECT LEFT(CONVERT(VARCHAR, timefromparts(@IntValue / 100, @IntValue % 100, 0, 0, 0), 100) ,PATINDEX('%[a,p]m',CONVERT(VARCHAR, timefromparts(@IntValue / 100, @IntValue % 100, 0, 0, 0), 100) )-1) AS Time

Выход

enter image description here

1 голос
/ 23 октября 2019

Как насчет timefromparts()?

select timefromparts(col / 100, col % 100, 0, 0, 0)

Здесь - это дБ <> скрипка.

Примечание: значение времени 15:16:00 не совпадаеткак 3:16:00. Ваш вопрос явно говорит, чтобы преобразовать в «время», которое я интерпретирую как нативный тип. Вы можете преобразовать значение в 12-часовые часы из значения time.

...