2016-10-10 2 views
0

Я не очень хорошо в Oracle SQL, но я пытаюсь проверить дату что-то вроде этогоOracle SQL: значение будет верно каждый после 30 дней

Например: 01-Jan-2000

Как я могу проверить, прошло ли уже 30 дней, а также на 60 месяцев и так далее. В основном мне нужно сделать условие, которое вернет true через месяц и так далее. я могу проверить его 1 на 1, но это явно не хорошо.

DECLARE 
appn_date DATE; 
BEGIN 
appn_date := Trunc(TO_DATE ('10-AUG-2016')); 

IF (appn_date = trunc(sysdate) - interval '30' day) THEN 
DBMS_OUTPUT.PUT_LINE('Yes'); 

ELSE 
DBMS_OUTPUT.PUT_LINE('No'); 

END IF; 

END; 

Он должен вывести Да потому, что 30 дней прошло уже, но это будет также выход Да через 60 дней, 90 дней и так далее. Я думаю, что modulo будет работать над этим. Есть идеи?

+0

хорошо, если 60 месяцев прошли то, очевидно, 30 дней также уже прошли .. поэтому нет необходимости проверять в течение 30 дней ..check на последнюю дату. или я пропущу ваше quesrtion>? –

+0

так вот что я собираюсь делать. Я собираюсь вставить значение каждый после 30 дней, поэтому, если дата 1 января, я собираюсь вставить значение в 1 февраля, 1 марта и так далее. – Alvinrightback

ответ

1

Чтобы проверить, если значение этого столбца старше на 30 дней, использование:

where the_date_column <= sysdate - interval '30' day 

или немного короче, но идентичные

where the_date_column <= sysdate - 30 

В течение нескольких месяцев вы должны использовать add_months()

where the_date_column <= add_months(sysdate, -60); 

Поскольку Oracle DATE на самом деле не является «датой», а «датой» время "вам может понадобиться trunc() (для обоих: столбец даты и sysdate), если вы не хотите рассматривать временную часть.

Смотрите руководство для получения подробной информации о том, как specify intervals и available date functions

+0

Спасибо, человек, это то, что я ищу - где the_date_column <= sysdate - interval '30' day – Alvinrightback

+0

Это применимо только для 30 дней, как прошло 60 дней и 90 дней? я должен проверять каждые 30 дней. – Alvinrightback

+0

Если вам нужно проверить на использование 90 дней '- 90' –