как конфертировать из int / min в HH: MM формат для одного столбца - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь обновить и преобразовать один столбец с разными значениями, например, минуты в числовом формате, например: 120, 10, 55, 280

, другой формат, например: 0011, 0017, 0120

другой формат похож на: 00:19, 02: 55

Я бы хотел, чтобы столбец был в одном формате, который "ЧЧ: ММ", поэтому, например, значение 120 будет 02:00, значение 55 будет 00:55, а значение 280 будет 04:40, а значения, такие как 0011, будут 00:11 и т. Д.

Я использую SQL Server 2012, а столбец - nvarchar(12)

Ответы [ 3 ]

0 голосов
/ 22 мая 2019

Вы можете попробовать следующий запрос,

select RIGHT('00'+CAST(55/60 AS VARCHAR(2)),2) +
':' +RIGHT('00'+CAST(55%60 AS VARCHAR(2)),2)
0 голосов
/ 22 мая 2019

Это самое простое, что я могу придумать, которое соответствует спецификациям в вашем вопросе и пояснениям в ваших ответах на комментарии, но не дает сбоя, если значения VARCHAR содержат недопустимые / неизвестные данные:

DECLARE @Table TABLE ([Value] VARCHAR(12));

INSERT INTO @Table VALUES ('120'), ('10'), ('55'), ('280'), ('0011'), ('0017'), ('0120'), ('00:19'), ('02:55'), ('foo!'), (null), ('');

SELECT
    [Value],
    CAST(
        CASE WHEN ISNUMERIC([Value]) = 1 THEN DATEADD(MINUTE, CAST([Value] AS INT), '00:00')
             WHEN ISDATE([Value]) = 1 THEN [Value]
        END
        AS TIME) AS [Time]
FROM
    @Table;
0 голосов
/ 22 мая 2019

Вы можете попробовать что-то вроде ниже.

SELECT CONCAT(RIGHT('00'+CAST(MINS/60 AS VARCHAR(20)),2),':',RIGHT('00'+CAST(MINS%60 AS VARCHAR(20)),2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...