如何修复 Oracle 中 SQL 中的 "ORA-01801: date format is too long for internal buffer" 错误
How to fix "ORA-01801: date format is too long for internal buffer" error in SQL in Oracle
我正在做一项作业,我需要在 SQL 中以非常具体的方式显示系统日期。表格应该如下:
仅首字母大写的星期几,罗马数字中的月份数字(大写),月份中的第几天,以大写字母 anno domini 拼写的年份,从带有短语 "Day of the year" 的儒略历,带有短语 "Seconds past midnight"
的午夜后秒数
我达到了午夜过后的实际秒数,但我似乎无法添加 "Seconds past midnight"。
我在网上查找了语法,但没有完全找到我需要的。可能我的搜索查询措辞不正确,或者我看得不够远。我的教科书对我来说也不是很清楚。我在那里看到的唯一一件事是对 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 文档中的
The total length of a datetime format model cannot exceed 22
characters.
但是,快速计数显示我的解决方案中格式模型的长度实际上超过了 22 个字符。 Oracle 文档完全错误的情况并不少见。在这种情况下,格式模型的长度似乎有限制,即使它不是文档中的那个...
我正在做一项作业,我需要在 SQL 中以非常具体的方式显示系统日期。表格应该如下:
仅首字母大写的星期几,罗马数字中的月份数字(大写),月份中的第几天,以大写字母 anno domini 拼写的年份,从带有短语 "Day of the year" 的儒略历,带有短语 "Seconds past midnight"
的午夜后秒数我达到了午夜过后的实际秒数,但我似乎无法添加 "Seconds past midnight"。
我在网上查找了语法,但没有完全找到我需要的。可能我的搜索查询措辞不正确,或者我看得不够远。我的教科书对我来说也不是很清楚。我在那里看到的唯一一件事是对 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 文档中的
The total length of a datetime format model cannot exceed 22 characters.
但是,快速计数显示我的解决方案中格式模型的长度实际上超过了 22 个字符。 Oracle 文档完全错误的情况并不少见。在这种情况下,格式模型的长度似乎有限制,即使它不是文档中的那个...