#sql-server #datetime #between
#sql-сервер #datetime #между
Вопрос:
Мне нужно подсчитать записи между до полуночи и после полуночи с полем, в котором используется 24-часовое время даты. Следующий оператор отлично работает для времени, которое приходится на один и тот же день, например, между 10:30 утра и 4:29 вечера:
WHERE CAST (theader_tdatetime AS time) BETWEEN '10:30' and '16:29'
Тем не менее, мне нужно также выбрать записи с 7:31 вечера до 2:00 утра, и мой оператор больше не работает:
WHERE CAST (theader_tdatetime AS time) BETWEEN '19:31' and '02:00'
Как я могу выбрать записи из этого таймфрейма?
Редактировать: несколько примеров записей, которые преодолевают полуночный разрыв
2015-11-20 23:48:52.000
2015-11-20 23:49:58.000
2015-11-20 23:51:35.000
2015-11-20 23:58:51.000
2015-11-20 23:59:26.000
2015-11-21 00:04:03.000
2015-11-21 00:04:36.000
2015-11-21 00:05:11.000
Комментарии:
1. пожалуйста, покажите несколько примеров записей
2. 0:2:00 — следующий день
3. Каков тип данных этого столбца?
4. вы можете предположить, что если вы используете 13:00 (ЕСЛИ ВАШ СТАРТ МЕЖДУ) или выше, SQL понимает, что вы имеете в виду 24-часовое время, но если оно ниже и ваше НАЧАЛО, оно НЕ предполагает. Следовательно, будьте явны с AM / PM
Ответ №1:
WHERE CAST (transaction_date AS time)
BETWEEN '15:30 PM' and '23:59 PM'
or CAST (transaction_date AS time) BETWEEN '0:00 AM' and '02:00 AM'
Комментарии:
1. Это работает хорошо, и я не знал о функциональности AM / PM. Спасибо.
Ответ №2:
ГДЕ ПРИВЕДЕНИЕ (theader_tdatetime КАК время) >= ’19:31′ ИЛИ ПРИВЕДЕНИЕ (theader_tdatetime КАК время) <= ’02:00′