2015-06-25 2 views
0

Мне нужно запустить пакетное задание, которое будет обрабатывать всю запись в таблице базы данных, которая была создана до 14 числа текущего месяца. В java я знаю, но я поражаю сервер базы данных напрямую через запрос Oracle, поэтому мне нужно сопоставить дату создания записи с датой 14-го месяца.Как получить конкретную дату текущего месяца в Oracle?

Пакетное задание может выполняться в любую дату, например, 17, 18 или 29 и т. Д., Но запись должна быть возвращена только, которая была создана до 14 числа текущего месяца, не в состоянии найти какую-либо помощь для этого.

как в Java

Calendar date = Calendar.getInstance(); 
date.set(Calendar.DAY_OF_MONTH, 14); 

ответ

1

Вы можете легко найти 14-ого числа текущего месяца используя TRUNC(). Вот пример:

select sysdate, 
     trunc(sysdate, 'mm') + 13 date_to_query_before 
from dual; 

SYSDATE    DATE_TO_QUERY_BEFORE 
--------------------- --------------------- 
25/06/2015 15:23:55 14/06/2015 00:00:00 
+0

Спасибо, очень помогите. –

1

Вы можете укоротить дату на месяц, используя правильную строку формата в СТВОЛЕ, затем добавьте 14.

Итак:

SELECT TRUNC(SYSDATE,'mm')+13 FROM DUAL; 

Дает 14-го числа текущего месяца. Таким образом, вы можете выбрать для передачи данных между 1-м и 14-м (вы сказали ДО 14) с

SELECT * 
    FROM my_table 
WHERE date_created >= TRUNC(SYSDATE,'mm') 
    AND date_Created < TRUNC(SYSDATE,'mm')+13; 

отредактирован, чтобы исправить глупую математическую ошибку ....

+0

Спасибо, но это возвращение 15-янв-15. –

+0

Бах - ты прав. Так что +13 получить от 1 до 14. –

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