Разница во времени между двумя столбцами времени на сервере SQL - PullRequest
0 голосов
/ 19 декабря 2018

У меня проблема с получением разницы в минутах между двумя столбцами времени на сервере sql.

Column1: Starttime
Column2: Endtime

Эти два типа nchar(10), я преобразовал их в формат времени следующим образом ииспользуя функцию datediff.Если два столбца имеют формат AM или формат PM, то разница в минутах наступит нормально.Но если у меня есть время начала в формате PM, а время окончания в формате AM (SQL принимает его как следующий день), то я получаю отрицательные минуты, чем ожидалось.

select 
    dty_act_start_time,
    dty_act_end_time,
    datediff(minute, convert(varchar,dty_act_start_time,114),convert(varchar,dty_act_end_time,114)) 
from DB.Mydatabase;

Пожалуйста, дайте мне знать, как получитьправильная разница в минутах.

1 Ответ

0 голосов
/ 19 декабря 2018

Просто добавьте 1440 минут (количество минут в 24 часах), если время начала больше времени окончания:

select
    start_time_time,
    end_time_time,
    datediff(minute, start_time_time, end_time_time) + iif(start_time_time <= end_time_time, 0, 1440) as diff
from (
    select
    convert(time(0), dty_act_start_time, 114) as start_time_time,
    convert(time(0), dty_act_end_time, 114) as end_time_time
    from (values
        ('09:00am', '10:00pm'),
        ('10:00pm', '09:00am')
    ) tests(dty_act_start_time, dty_act_end_time)
) x

Результат:

start_time_time | end_time_time | diff
09:00:00        | 22:00:00      | 780
22:00:00        | 09:00:00      | 660
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...