2015-01-02 6 views
0

Я пытаюсь захватить следующие диапазоны дат:Использование нескольких диапазонов дат в Amazon Redshift

  • Текущая дата - предыдущие 6 недель
  • 51 недель назад - 55 недель назад

у меня есть следующий вопрос, но он не работает:

OR date(date) >= date(dateadd(week,-6, current_date)) 
OR date(date) >= date(dateadd(week,-55, current_date)) 
OR date(date) <= date(dateadd(week,-51, current_date)) 

Любые идеи?

ответ

2

Вы должны использовать AND для указания диапазона дат. Попробуйте следующее условие.

date(date) >= date(dateadd(week,-6, current_date)) 
OR (
    date(date) >= date(dateadd(week,-55, current_date)) 
    AND 
    date(date) <= date(dateadd(week,-51, current_date)) 
) 
+0

Это точно! Благодаря! – user3456571

0

Вы должны использовать дату арифметику:

select * 
from the_table 
where the_date_column <= current_date - interval '6 week' 
    or the_date_column between 
          current_date - interval '55 week' 
         and current_date - interval '51 week'; 

Если the_date_column фактически timestamp колонны (не date столбца), вы можете бросить его в date, чтобы избавиться от части времени, используя the_date_column::date

руководство объясняет все доступные функции даты/времени:
http://www.postgresql.org/docs/current/static/functions-datetime.html

+0

Так что я использую Amazon Redshift. Это все меняет? – user3456571

+0

@ user3456571: понятия не имею, я никогда не использовал redshift, и я не знаю, на какой основе Postgres это основано. Но артефактная дата была такой, что на века (на самом деле это довольно стандартный SQL, за исключением «недельного» интервала). Вы должны добавить это к своему первоначальному вопросу. –

Смежные вопросы