PLSQL日期过滤器错误

时间:2013-01-30 05:08:38

标签: oracle plsql oracle10g oracle11g

我有一张自2012年以来的数据表。我需要从31 days back given date获取此表中的数据。所以我写下面的查询来获取数据。

select ('[' || work_date || '] ' || field_name || ' - ' ||work_desc) d
from DAILY_WORK
where TO_CHAR(work_date,'DD/MM/YYYY') >= TO_CHAR(to_date('30-Jan-13','dd-MON-yyyy') - (31),'DD/MM/YYYY')
order by work_date desc

当我执行此查询时,它仅返回以下日期的数据。

31-AUG-12
31-OCT-12
30-DEC-12
31-DEC-12

但实际上我需要获取数据from 2012-12-30 to 2013-01-30

我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

使用它:

select ('[' || to_char(work_date, 'dd-MON-yyyy') || '] ' || field_name || ' - ' ||work_desc) d
from DAILY_WORK
where work_date >= to_date('30-Jan-2013','dd-MON-yyyy') - 31
order by work_date desc

答案 1 :(得分:0)

您可以使用以下查询:

select * from DAILY_WORK where work_date >= TRUNC(to_date('01-30-2013','MM/DD/YYYY')) - 31

检查日期格式您正在使用的工具根据工具我使用的日期格式是'MM / DD / YYYY'

此查询给出了正确的结果。您可以查看。