(Oracle) Я должен вернуть все записи за последние 12 месяцев. Как это сделать в PL / SQL?
Обновлено: Извините, я забыл объяснить, у меня есть столбец типа DATA





SELECT *
FROM table
WHERE date_column > SYSDATE - 365
SELECT *
FROM table
WHERE date_column > ADD_MONTHS(SYSDATE, -12)
Не уверен, что я заслужил даун-моддинг для предыдущих постов ... просто пытался помочь.
То, что вы пытались помочь, не означает, что ответ был правильным. Я уверен, что большинство людей здесь только пытаются помочь. Не обижайтесь на дауны модов, учитесь у них.
Мэтью ... Я возражал против того факта, что он не упомянул, что у него есть столбец ДАТА (см. Более позднюю правку выше) ... Я спросил, есть ли у него столбец ДАТА (сообщение теперь удалено), и получил понижен для этого. Я чувствовал, что это было жестко. :-)
Выполнение этого в PL / SQL в значительной степени синонимично выполнению этого в SQL.
SELECT *
FROM table
WHERE date_column >= ADD_MONTHS(TRUNC(SYSDATE),-12)
Вы можете повозиться с оператором TRUNC, чтобы получить именно тот диапазон, который вам нужен - я использовал TRUNC (SYSDATE), который совпадает с TRUNC (SYSDATE, 'D') - т.е. удалить временную часть sysdate. Например, если сейчас 12 августа, но вам нужны значения с 1 февраля вместо 12 февраля, используйте:
SELECT *
FROM table
WHERE date_column >= ADD_MONTHS(TRUNC(SYSDATE,'MM'),-12)
Также см. Документацию для обработки месяцев с разным количеством дней: http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions004.htm#SQLRF00603
В Oracle нет такой функции, как ROLL_MONTHS