我在oracle
表中有数据,其中日期字段Created_Date
的格式为01/01/2022 7:00:00 PM
,类型为varchar2
,我想获得过去一个月的数据,我做了以下查询,该查询不起作用
select *from Mn_Fdd_tbl where to_date(to_char(Created_Date,'DD/MM/YYYY'), 'DD/MM/YYYY' ) > trunc(sysdate)-30;
应该是
select *
from mn_fdd_tbl
where to_date(created_date, 'dd/mm/yyyy hh:mi:ss pm') > add_months(trunc(sysdate), -1);
因为
TO_CHAR
中没有任何意义——处理已经是字符串的东西。。。- 。。。使用错误的格式模型
- "上个月":并不是所有的月份都有30天,所以——你的"计算";大约50%的月份都是错误的。改为使用
add_months