to_date 出现 ORA-01830 错误

Posted

技术标签:

【中文标题】to_date 出现 ORA-01830 错误【英文标题】:ORA-01830 error with to_date 【发布时间】:2016-03-09 16:09:13 【问题描述】:

我正在尝试创建一个减去两天的日期,然后将其转换为字符。出于某种原因,我收到以下错误:

ORA-01830: date format picture ends before converting entire input string

这是我的代码:

 SELECT TO_CHAR(to_date('20-JUL-01 10:40:12')-2, 'dd-Mon-yy 24HH:MI:SS') as "Subtract 2 Days"
       FROM DUAL;

不知道怎么回事,好像是秒的问题

【问题讨论】:

【参考方案1】:

Oracle 默认为 12 小时制,上午/下午。所以,你需要一个日期格式来进行日期转换:

SELECT TO_CHAR(to_date('20-JUL-01 10:40:12', 'dd-Mon-yy HH24:MI:SS')-2,
               'dd-Mon-yy HH24:MI:SS') as "Subtract 2 Days"
FROM DUAL;

另外,正确的 24 小时符号是“HH24”,而不是“24HH”。

【讨论】:

我不得不说:这个答案不仅收到了匿名的反对票(但它还有其他赞成票),而且我还对其进行了测试,知道它是正确的(尽管可能有错字,当然)。 最近在这里无缘无故匿名投票似乎非常普遍。人们也不接受任何答案(只是接受帮助并在不承认的情况下跑步 - 粗鲁!),或接受但不支持。我最后 11 个接受的答案中有 6 个得到了 0 票。并不是说我需要拍拍我的后背,但是是的 - 花一点时间来感谢您的帮助似乎并不值得期待。 我只能猜测有人反对第一句话——是否有任何地区默认显示时间组件?如果会话 NLS_DATE_FORMAT 具有 HH 和 AM,它不会与 OP 的值出错,它只会假设它是上午。当然,这两者都不会减损您给出的解决方案的正确性。人们很奇怪......

以上是关于to_date 出现 ORA-01830 错误的主要内容,如果未能解决你的问题,请参考以下文章

ORA-01830: 日期格式图片在转换整个输入字符串之前结束(增量同步)

java常见异常问题

ORA-01830问题的解决

ORA-01830问题的解决

从 ORACLE 数据库中选择数据时遇到 ORA-01830 错误

错误“ORA-01830”:日期格式图片在转换整个输入字符串之前结束(Oracle 错误)