SQL TO_CHAR TO_NUMBER TO_DATE
SQL TO_CHAR TO_NUMBER TO_DATE
我有以下表达式
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
谢谢大家!
您可以使用 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)
我有以下表达式
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
谢谢大家!
您可以使用 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)