У вас есть неявные преобразования!
Listagg принимает ввод символов.Таким образом, в базе данных есть неявный to_char вокруг ваших значений даты.Это можно увидеть, изменив параметр nls_date_format:
alter session set nls_date_format = 'dd-mon-yyyy';
select listagg(date_a,'#') within group(order by date_a) dts
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
);
DTS
01-jan-0099#01-jan-0099
alter session set nls_date_format = 'yyyy-mm-dd';
select listagg(date_a,'#') within group(order by date_a) dts
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
);
DTS
0099-01-01#0099-01-01
Избегайте этого, явно указав даты:
select listagg( to_char ( date_a, 'mm/dd/yyyy' ),'#') within group(order by date_a) dts
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
);
DTS
01/01/0099#01/01/0099