Oracle到_日期格式问题

Oracle到_日期格式问题,oracle,oracle11g,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错误,但它会进行插入。请解释原因或参考相关文档,好吗?如果在字符串中找不到匹配项,Oracle将测试其他格式-您

我有一个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错误,但它会进行插入。请解释原因或参考相关文档,好吗?

如果在字符串中找不到匹配项,Oracle将测试其他格式-您可以查看它查找的规则

另外,年份有四位数。在可能的情况下,请确保在提供日期字符串时指定所有四个;它使数据库不必猜测并可能出错。即,您的原始示例应为:

截至日期('2010年5月10日,'DD-MM-YYYY')

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


例如,
截止日期('2010年5月10日','dd-mm-yyyy')
将匹配,但
截止日期('2010年5月10日','fxdd-mm-yyyy')
将失败

您不应在未指定语言的情况下将
截止日期('2010年5月10日','dd-MON-RR','NLS-u-date语言=美语'
)。否则,您将依赖可以设置为其他语言的会话设置,而“MAY”没有任何含义。您是否有理由不使用简单的日期文字(例如
date'2010-05-10'
)?在我的应用程序中,我使用日期的方式与您所说的“2015-05-10”相同。我只想知道为什么Oracle不拒绝“2015-05-10”这样的值,并且是否可以将分隔符仅限制为“-”。