oracle to_date 函数不接受格式
Posted
技术标签:
【中文标题】oracle to_date 函数不接受格式【英文标题】:oracle to_date function not accepting format 【发布时间】:2011-03-09 02:11:28 【问题描述】:当我在 oracle 10g 中这样做时:
select to_date(trunc(SOMEINPUTdATE)) from table1
where to_date(trunc(date_column_timestamp),'MM/DD/YYYY')
>= to_date('03/11/2011' ,'MM/DD/YYYY')
我得到:ORA-01843: not a valid month
如果我更改为:'YYYY/MM/DD'
,它可以工作。
但是'MM/DD/YYYY'
是一个有效的格式对吗?
【问题讨论】:
【参考方案1】:你把事情搞混了。 TO_DATE 将字符串转换为 DATE。如果date_column_timestamp
已经是日期,则无需将其转换为日期。
select trunc(SOMEINPUTdATE) from table1
where trunc(date_column_timestamp)
>= to_date('03/11/2011' ,'MM/DD/YYYY')
ORA-01843
是由日期到字符串的隐式转换引起的。换句话说,如下:
to_date(trunc(date_column_timestamp),'MM/DD/YYYY')
等价于(假设默认日期格式DD-MON-YYYY
):
to_date(TO_CHAR(trunc(date_column_timestamp),'DD-MON-YYYY'),'MM/DD/YYYY')
因此,TO_CHAR
返回类似于'11-MAR-2011'
的内容,这会导致to_date
失败,因为日期格式不匹配。
您的select
子句中也存在同样的问题。您不需要在日期列的 trunc
周围使用 to_date
。
【讨论】:
以上是关于oracle to_date 函数不接受格式的主要内容,如果未能解决你的问题,请参考以下文章
为啥 ORACLE TO_DATE() 函数可以接收任何日期格式? [复制]
Oracle中的TO_DATE和TO_CHAR函数以及日期处理