我想根据我的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'
答案 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
会为您的约会添加月份。它可能是积极的或消极的