Я пытаюсь извлечь часть ЧЧ: ММ: СС из поля даты и времени и использовать ее для получения разницы в датах в минутах между извлеченными частями.Однако я получаю другое поведение с convert (108), который дает мне точные результаты, а формат - неверные.
declare @DATE1 SMALLDATETIME = '2019-02-22 06:15:00'
, @DATE2 SMALLDATETIME = '2019-02-22 14:15:00'
select datediff( minute, convert(varchar(10), @DATE1,108)
,convert(varchar(10), @DATE2,108) ) [Total Mins from Convert],
convert(varchar(10), @DATE1,108) [Value from Convert] ,
format(@DATE1,'hh:mm:ss') [Value from Format] ,
datediff( minute, cast(format(@DATE1,'hh:mm:ss') as time) ,
cast(format(@DATE2,'hh:mm:ss') as time) ) [Total Mins from Format]
Вывод:
Total Mins from Convert Value from Convert Value from Format Total Mins from Format
480 06:15:00 06:15:00 -240
Я могу использовать преобразование без каких-либо проблем, чтобы правильно получить разницу в датах, но хотел понять, почему формат показывает различия, когда ЧЧ: ММ: СС одинаковыс конвертированием.Если я даю переменную @ date2 <= 12 часов вечера, это дает мне правильные результаты как с «Форматом», так и с «Преобразованием», однако, если мой @hour больше 12 часов вечера, например, 14:15 в этом примере, это дает мне неверные результаты.,</p>
это потому, что формат имеет 12-часовой формат времени, а конвертировать - 24-часовой формат?Можно ли изменить формат времени для функции «Формат».Может ли кто-нибудь помочь мне с объяснением и изменением поведения с помощью функции Формат, если это возможно?