Извлечь данные для определенного диапазона времени даты #Teradata - PullRequest
0 голосов
/ 13 марта 2019

У меня есть поле даты и времени в Teradata с данными на 01.01.2009 02:13:08.Мне нужно вытащить данные для определенного временного диапазона, например, между 01.01.2009 и 01.02.2017 и временным интервалом с 9 вечера до 6 утра, как диапазон между 01.01.2009 21:00:00 и 1/02/20196:00:00.

Как этого достичь.

Спасибо

1 Ответ

1 голос
/ 13 марта 2019

Похоже, вам нужны только записи, которые были вставлены с ночным временем между двумя датами.Ночь определяется как «между 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 января

...