Доступ к SQL в формате DateDiff hh: nn: ss

#sql #ms-access #datediff

#sql #ms-access #datediff

Вопрос:

Использование Access 2010

Я пытаюсь взять разницу между двумя записями даты и времени и отобразить это значение в формате «час (ы): минута (ы): секунда (ы)». У меня есть следующий оператор SQL, но он всегда выдает: «00:00:00». Что я делаю не так?

 SELECT TOP 500 
    [ID], 
    [USERNAME], 
    [TIME_ENTER], 
    [TIME_EXIT], 
    FORMAT ( 
      DATEDIFF("s", [TIME_ENTER], [TIME_EXIT]),  "hh:nn:ss"
    )  AS HH_MM_SS
 FROM tbl_logs_sessions;
  

[TIME_ENTER] [TIME_EXIT] Для столбцов и задается значение «Дата / время», а формат — «Общая дата»

Комментарии:

1. «s» означает секунду, которая вернет разницу в секунду в количестве .. вместо этого просто выполните обычное вычитание и отформатируйте результат даты .. vba. Формат(#11:00:10# — #23:00:00#,» чч: мм: сс») = 11:59:50

Ответ №1:

DATEDIFF возвращает число, которое не может быть преобразовано в «hh: ss: ss», поскольку оно не является датой.

Вместо:

 FORMAT(DATEADD("s", DATEDIFF("s", [TIME_ENTER], [TIME_EXIT]), #00:00:00#), "hh:nn:ss")
  

Обратите внимание, что если разница превышает 24 часа, вы вернетесь к полуночи.

Комментарии:

1. Это идеально. Пользователь не будет дольше 24 часов, так что спасибо!

Ответ №2:

Вы можете просто использовать:

 FORMAT([TIME_EXIT] - [TIME_ENTER], "hh:nn:ss") AS HH_MM_SS