【发布时间】:2019-03-01 02:32:03
【问题描述】:
当我运行以下 2 个语句时,我得到的输出是
SELECT TO_DATE ('01/01/99', 'MM/DD/YYYY') AS date_a FROM DUAL
UNION ALL
SELECT TO_DATE ('01/01/99', 'MM/DD/YYYY') AS date_a FROM DUAL
Output
---------
1/1/0099
1/1/0099
现在 - 如果我尝试连接上述 2 个值而不使用 listagg 函数更改值,则输出将像这样更改。
SELECT listagg(date_a,'#') WITHIN GROUP(order by date_a) FROM
(
SELECT TO_DATE ('01/01/99', 'MM/DD/YYYY') AS date_a FROM DUAL
UNION ALL
SELECT TO_DATE ('01/01/99', 'MM/DD/YYYY') AS date_a FROM DUAL
)
Output
--------
01-JAN-99#01-JAN-99
我需要输出为1/1/00999#1/1/00999
请帮我解决这个问题
【问题讨论】:
-
使用
TO_CHAR(),而不是TO_DATE()。 -
我提供了上述查询作为示例。在我的实际场景中,date_a 是一个数据类型为 Date 的 DB 列。
-
为什么要对已经是 DATE 的值执行
TO_DATE()? -
我知道这只是一个例子,但你为什么要使用带有四字符掩码 (YYYY) 的两位数年份值 (99)?或者根本,或者那件事......
标签: sql oracle oracle11g oracle12c listagg