Похоже, вам нужны только записи, которые были вставлены с ночным временем между двумя датами.Ночь определяется как «между 9 вечера и 6 утра»
SELECT * FROM table
WHERE
datecol BETWEEN '2019-01-01' AND '2019-02-01' AND
NOT (EXTRACT(HOUR FROM datecol) BETWEEN 6 AND 21)
Первый предикат получает все данные из диапазона дат, а второй предикат исключает записи, которые находятся между 6 утра и 9 вечера, т.е.он исключает все дневные записи, оставляя только ночные
Если ваш запрос проще, то вы действительно буквально хотите, чтобы записи были только с 9 вечера 2019-01-01 до 6 утра 2019-02-01, тогдазапрос, что:
SELECT * FROM table
WHERE
datecol BETWEEN '2019-01-01 21:00' AND '2019-02-01 06:00'
Обратите также внимание, что когда вы спрашиваете о SO, у вас есть международная аудитория , и из вашего сообщения не ясно, являются ли ваши даты dd/mm/yyyy
или mm/dd/yyyy
.Я предположил dd/mm/yyyy
, но вам, возможно, стоит подумать о переключении формата на yyyy-mm-dd
, когда вы будете задавать вопросы в будущем , поскольку это формат ISO, который не является неоднозначным.Если ваш формат даты в вашем вопросе mm/dd/yyyy
, вам нужно будет настроить мои запросы в соответствии с вашими потребностями, потому что мои запросы «все января», но если вы имели в виду mm/dd
, то вы ищете «ночь с 1-го января2 января