Диапазон дат в sql - PullRequest
       2

Диапазон дат в sql

1 голос
/ 19 июня 2011

Я хочу написать запрос, в котором будут отображаться данные в период с 01 апреля 2010 года по последний день апреля 2011 года.

Но я не хочу жестко кодировать год.Должно быть взято из системной даты, поэтому отображаются только записи с этого года по апрель следующего года.

Заранее спасибо за помощь.

Ответы [ 3 ]

0 голосов
/ 19 июня 2011

Если столбец даты не имеет временной составляющей:

select ...
from mytable
where datecol between add_months(trunc(sysdate,'YYYY'),3)
                  and add_months(trunc(sysdate,'YYYY'),16)-1

Если столбец даты содержит компонент времени:

select ...
from mytable
where datecol >= add_months(trunc(sysdate,'YYYY'),3)
and   datecol < add_months(trunc(sysdate,'YYYY'),16)
0 голосов
/ 20 июня 2011

Ваш запрос должен выглядеть примерно так

ВЫБРАТЬ * От youtable ГДЕ столбец даты МЕЖДУ to_char (sysdate, 'yyyy') + '0401' И to_char (sysdate, 'yyyy') + '0430'

0 голосов
/ 19 июня 2011
select add_months( trunc(sysdate,'YYYY'), -12 ) 
       + interval '4' month 
       + level 
       - 1
  from dual
connect by level <= ( (trunc(sysdate,'YYYY') 
                       + interval '4' month) -
                      (add_months( trunc( sysdate, 'YYYY' ), -12 ) 
                       + interval '4' month) )

должно работать. Возможно, вы могли бы упростить выражение, которое вычисляет количество строк, но мне придется подумать о високосных годах в течение нескольких минут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...