Количество SQL Server между до и после полуночи — 24 часа

#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′