2015-10-09 9 views
0

Я хочу получить записи за последний месяц на основе поля db table [note] «date_created».Получить записи за прошлый месяц в SQL

Что такое sql для этого?

в прошлом месяце - 2015-08-30 к 2015-09-30

Я ниже запроса используется из ссылки, но get last three month records from table но получаю ошибку ORA-30089: отсутствует или недействительный

select * 
from note 
where to_date(DATE_CREATED) > to_date(CURRENT_DATE) - to_date(INTERVAL '3 months') 

Даже я используется ниже запроса, но по-прежнему получаю сообщение об ошибке: ORA-01861: буквальный не соответствует формату строки

select * 
from note 
where to_date(DATE_CREATED) BETWEEN '2015-08-30 00:00:00.0' AND '2015-09-30 00:00:00.0' 
+0

И вы используете SQL-Server? – BJones

+0

Это глава оракула ORA -.... – FirebladeDan

+3

Это должна быть версия 2018, которая имеет ошибки ORA –

ответ

2

Попробуйте использовать TO_DATE на текстовые строки, а также.

select * from note where to_date(DATE_CREATED) BETWEEN TO_DATE('2015-08-30', 'YYYY-MM-DD') AND TO_DATE('2015-09-30', 'YYYY-MM-DD'); 
+0

Он работает, спасибо! – Jatin

1

Это не синтаксис Oracle. Если вы хотите использовать INTERVAL, вы можете использовать только интервал YEAR_TO_MONTH или DAY_TO_SECOND.

Это будет выглядеть следующим образом (за последние 3 месяца):

select * 
from note 
where to_date(DATE_CREATED) > to_date(CURRENT_DATE) - INTERVAL '0-3' YEAR TO MONTH 

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

select * 
from note 
where to_date(DATE_CREATED) > ADD_MONTHS(to_date(CURRENT_DATE), -3) 

ADD_MONTHS добавит месяцев в вашей дате. Это может быть положительным или отрицательным

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