Oracle to_date格式问题

时间:2016-06-06 09:05:19

标签: oracle oracle11g

我有一个insert语句,其中一个插入的字段是date。我使用to_date函数以这种方式将字符串转换为日期:

to_date('10-MAY-10', 'DD-MON-RR')

它工作正常,但我发现,它还允许变体,如:

to_date('10?MAY?10', 'DD-MON-RR')
to_date('10+MAY+10', 'DD-MON-RR')

我预计会出现Oracle错误,但它会进行插入。您能解释一下原因或参考相关文件吗?

1 个答案:

答案 0 :(得分:1)

如果无法在字符串中找到匹配项,Oracle将测试其他格式 - 您可以查看其查找here in the documentation的内容的规则。

顺便说一句,年份有四位数。如果可能,请确保在提供日期字符串时指定全部四个;它使数据库免于猜测并可能出错。即你原来的例子应该是:

to_date('10-05-2010', 'DD-MM-YYYY')

如果您需要将日期作为字符串限制为特定格式,您可以使用fx格式修饰符,这在前面链接的同一文档中提到过。

例如。 to_date('10/05/2010', 'dd-mm-yyyy')会匹配,但to_date('10/05/2010', 'fxdd-mm-yyyy')会失败