sql oralce ошибка - формат даты не распознан

select TO_CHAR(sysdate, 'DD-MON-YYYY HH24:MI:SSxFF') from dual;

Вот запрос, кусок TO_CHAR(sysdate, 'DD-MON-YYYY HH24:MI:SSxFF') просто с документации скопировал, заменив только на sysdate не работает. Как это вообще возможно?


Ответы (1 шт):

Автор решения: Akina

Спецификатор формата FF (дробные доли секунды) применим только к типу данных TIMESTAMP (именно такой тип имеет поле таблицы в тексте документации) и неприменим к типу данных DATETIME (именно такой тип данных возвращает функция SYSDATE).

select TO_CHAR(sysdate, 'DD-MON-YYYY HH24:MI:SSxFF') from dual;
ORA-01821: date format not recognized
select TO_CHAR(sysdate, 'DD-MON-YYYY HH24:MI:SSxFF3') from dual;
ORA-01821: date format not recognized
select TO_CHAR(sysdate, 'DD-MON-YYYY HH24:MI:SS') from dual;
| TO_CHAR(SYSDATE,'DD-MON-YYYYHH24:MI:SS') |
| :--------------------------------------- |
| 14-MAY-2020 06:03:03                     |
select TO_CHAR(CAST(sysdate AS TIMESTAMP), 'DD-MON-YYYY HH24:MI:SSxFF') from dual;
| TO_CHAR(CAST(SYSDATEASTIMESTAMP),'DD-MON-YYYYHH24:MI:SSXFF') |
| :----------------------------------------------------------- |
| 14-MAY-2020 06:03:03.000000                                  |
select TO_CHAR(CAST(sysdate AS TIMESTAMP), 'DD-MON-YYYY HH24:MI:SSxFF3') from dual;
| TO_CHAR(CAST(SYSDATEASTIMESTAMP),'DD-MON-YYYYHH24:MI:SSXFF3') |
| :------------------------------------------------------------ |
| 14-MAY-2020 06:03:03.000                                      |
select TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SSxFF') from dual;
| TO_CHAR(SYSTIMESTAMP,'DD-MON-YYYYHH24:MI:SSXFF') |
| :----------------------------------------------- |
| 14-MAY-2020 06:03:03.906859                      |

db<>fiddle here

Обрати внимание - SYSDATE не возвращает дробные доли секунды вообще.

→ Ссылка