#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