我有以下的表达SQL TO_CHAR TO_DATE TO_NUMBER
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:invalid number format model
列在数据类型方面协调一致。 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
谢谢大家!
列'SNAPSHOT_DAY'的日期类型是什么? –
'TO_DATE(dab.SNAPSHOT_DAY, 'YYYYMMDD')'是毫无道理的,如果'snapshot_day'已经是一个'date'柱。 –
而不是试图解决这个问题,你最好用简单的英语说什么输入是什么以及期望的结果是什么。在任何情况下,比较日期后,您将它们转换为字符串是错误的,并且不清楚您打算如何从字符串中减去1。 – mathguy