Время цикла (7) значения столбца не ближайшие 15 минут - PullRequest
0 голосов
/ 31 мая 2019

У меня есть столбцы типа time (7) [разрешены нули], некоторые значения должны быть скорректированы с точностью до 15-минутной отметки, а секунды установлены на ноль.

Пример:

09:00:40.0000000 -> 09:00:00.0000000
12:50:00.0000000 -> 12:45:00.0000000
12:59:37.0000000 -> 13:00:00.0000000

Ответы [ 2 ]

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

Я рекомендую timefromparts():

select timefromparts(datepart(hour, timecol),
                     (datepart(minute, timecol) / 15) * 15,
                     0, 0, 6)

Выше усечено значение. Округление значения немного сложнее. Я бы порекомендовал:

select timefromparts(datepart(hour, dateadd(second, 7 * 60 + 30, timecol)),
                     (datepart(minute, dateadd(second, 7 * 60 + 30, timecol)) / 15) * 15,
                     0, 0, 6)

То есть добавить 7,5 минут и обрезать.

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

Попробуйте это-

SELECT 
CAST
(
    DATEADD(MINUTE, ROUND(DATEDIFF(MINUTE, 0,
    CAST('2015-11-24  ' -- Add any day for converting to DateTime
    +LEFT('09:00:40.0000000',LEN('09:00:40.0000000') - 4) -- Removing last four zero from your data to convert to date time
    AS DATETIME)) / 15.0, 0) * 15, 0) 
    AS TIME
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...