ORACLE SQL 手册(主要 11.1 SQL 手册的第 2-58 页)指出:
日期时间格式模型的总长度不能超过 22 个字符。
但是,我已经能够为 TO_CHAR 使用具有更多字符的格式字符串,几乎所有字符都是文本“文字”。
这安全吗(ORACLE 11)?(也许限制不包括非日期文字?)
例如:
SELECT TO_CHAR(sysdate,
'"SOMESTRING_"YYYYMMDD"_SOME LOTS MORE STRINGS OF A FILENAME PREFIX"')
FROM DUAL;
结果:
SOMESTRING_20200226_SOME LOTS MORE STRINGS OF A FILENAME PREFIX
它也适用于表格中的日期。
我想这样做的原因是在数据库列中构建一个文件名模板;否则我需要将日期格式放在单独的字段中。
PS请告诉我这是否应该在不同的社区提出。我以前从来没有问过问题,所以我没有名誉可以失去:-)。对人好点。
仅仅因为你可以跳下悬崖,并不意味着你应该。
REPLACE()
与令牌一起使用:您可以更进一步以允许使用不同的格式字符串:
请注意,存在
TO_CHAR
导致 ORA-600 错误和会话崩溃的长标识符解析错误。我会改用这个: