我有一个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错误,但它会进行插入。您能解释一下原因或参考相关文件吗?
答案 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')
会失败