Как узнать разницу между временем форматирования 24 часа? - PullRequest
0 голосов
/ 29 сентября 2019

Я хочу получить разницу во времени между 2 раза.Это в основном между 9 вечера и 5 утра.

SELECT DATEDIFF(HOUR, '21:00', '05:00')

Вот запрос, который я пытаюсь выполнить, но он возвращает 16 часов, хотя он должен возвращать 8 часов.Кто-нибудь может помочь?

Ответы [ 2 ]

1 голос
/ 29 сентября 2019

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

select (case when @start <= @end
             then datediff(hour, @start, @end)
             else 24 - datediff(hour, @end, @start)
        end) as diff_hours

Вы также можете выразить это как:

select (24 + datediff(hour, @start, @end)) % 24
0 голосов
/ 29 сентября 2019

Один метод с выражением CASE:

SELECT CASE WHEN DATEDIFF(HOUR, '21:00', '05:00') >= 0 THEN DATEDIFF(HOUR, '21:00', '05:00') ELSE 24 + DATEDIFF(HOUR, '21:00', '05:00') END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...