我有以下表达式
WHERE TO_CHAR(TO_DATE(dab.SNAPSHOT_DAY,'YYYYMMDD'),'MM') >=
TO_CHAR(TO_DATE('{RUN_DATE_YYYYMMDD}','YYYYMMDD'),'MM') -1
'{RUN_DATE_YYYYMMDD}' returns the date of when the data was captured.
我收到以下错误:
ORA-01481:无效的数字格式模型
列在数据类型方面是一致的。
dab.SNAPSHOT_DAY
为{DATE} 2016-07-24 00:00:00.0
你会对可能发生的事情有任何暗示吗?
我要做的是从当前和过去一个月获得结果。这就是为什么我想将两个日期转换为MONTH(MM)然后减去1.例如:
Snapshot_day = 05/JUN/2016 --> 06
RUN_DATE = 27/JUL/2016 --> 07
Comparing them: 06 >= 07 - 1 TRUE
谢谢大家!
答案 0 :(得分:0)
您可以使用trunc
获取所需日期的特定部分
where trunc(dab.SNAPSHOT_DAY,'MM') >=
trunc(to_date('{RUN_DATE_YYYYMMDD}','YYYYMMDD'),'MM') -1
但我认为更好的解决方案是:
where snapshot_day >= add_months(to_date('{RUN_DATE_YYYYMMDD}','YYYYMMDD'),-1)
如果{RUN_DATE_YYYYMMDD}
实际上是某种日期的参数:
where snapshot_day >= add_months(run_date),-1)