在SQL中获取上个月的记录

时间:2015-10-09 14:30:43

标签: sql oracle

我想根据我的db table [note]字段" date_created"来获取上个月的记录。

执行此操作的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'

2 个答案:

答案 0 :(得分: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');

答案 1 :(得分:2)

这不是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会为您的约会添加月份。它可能是积极的或消极的