![](/img/trans.png)
[英]ORA-06502: PL/SQL: numeric or value error: character string buffer too small in Oracle sql query
[英]How to fix “ORA-01801: date format is too long for internal buffer” error in SQL in Oracle
我正在做一个作业,需要在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文档中
日期时间格式模型的总长度不能超过22个字符。
但是,快速计数表明,我的解决方案中格式模型的长度实际上超过22个字符。 Oracle文档经常会犯错误。 在这种情况下,格式模型的长度似乎受到限制,即使不是文档中的格式模型也是如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.