gpt4 book ai didi

sql - 如何修复 Oracle 中 SQL 中的 "ORA-01801: date format is too long for internal buffer"错误

转载 作者:行者123 更新时间:2023-12-04 14:20:09 35 4
gpt4 key购买 nike

我正在处理一项任务,我需要在 SQL 中以非常具体的方式显示系统日期。表格应该是这样的:

星期几,第一个字母大写,罗马数字中的月份数字(大写),月份的日期,用大写字母拼写的年份,带有 anno domini,来自儒略历的年份中的日期,带有短语“一年中的某一天”,午夜过后的秒数,带有短语“午夜过后的秒数”

我达到了午夜后的实际秒数,但我似乎无法在其中添加“午夜后的秒数”。

我在网上寻找语法,但没有找到我所需要的。可能我的搜索查询措辞不正确,或者我看的不够远。我的教科书对此也不是很清楚。我在那里看到的唯一内容是对 CURRENTDATE 之间差异的解释。和 SYSDATE .

这是我到目前为止。我意识到这可能是完全错误的。我在没有 + 的情况下尝试过并且也没有短语周围的引号。

SELECT TO_CHAR
(SYSDATE, 'Dy, RM, D, YEAR AD, DDD "Day of the year", SSSSS "Seconds past midnight") "NOW"
FROM DUAL;

我预计输出会说 Fri, IV, 19, TWENTY NINETEEN AD, 109 Day of the year, 73829 Seconds past midnight但它给了我以下错误: ORA-01801: date format is too long for internal buffer

最佳答案

您可以作弊 - 将最后一个硬编码文本连接到 TO_CHAR 的结果,而不是将其包含在格式模型中。

SELECT TO_CHAR(SYSDATE, 'Dy, RM, DD, YEAR AD, DDD "Day of the year ", SSSSS')
|| ' Seconds past midnight' "NOW"
FROM DUAL;



NOW
----------------------------------------------------------------------------------
Fri, IV , 19, TWENTY NINETEEN AD, 109 Day of the year , 54236 Seconds past midnight

另请注意,第三个格式元素必须是 DD(您有 D,它不会为您提供月份中的两位数日期,在本例中为 19)。

进一步澄清你得到的错误:这是写在 Oracle 文档中

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/Format-Models.html#GUID-49B32A81-0904-433E-B7FE-51606672183A

The total length of a datetime format model cannot exceed 22 characters.



但是,快速统计一下,我的解决方案中格式模型的长度实际上超过了 22 个字符。 Oracle 文档完全错误的情况并不少见。在这种情况下,格式模型的长度似乎有限制,即使它不是文档中的那个……

关于sql - 如何修复 Oracle 中 SQL 中的 "ORA-01801: date format is too long for internal buffer"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55767980/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com