Поля даты в Oracle не отформатированы для отображения - это внутренний формат , который вы конвертируете в / из при вводе / выводе.Когда вы сохраняете дату в столбцах типов данных Oracle, вы преобразуете свою строку символов во внутренний формат, описывая дату-время для функции TO_DATE со строкой модель модели .Oracle интерпретирует символьную строку в ее внутренний формат.Когда вам нужно отобразить дату, вы делаете наоборот - вы говорите оракулу, как отобразить дату, снова предоставив модель формата, на этот раз функции TO_CHAR.
Чтобы проиллюстрировать на вашем примере, вы можете преобразоватьот дд-мм-гггг до дд-мм-гггг чч-мм без сохранения значения (я предполагаю, что вы хотели отобразить часы-минуты. Формат формата минут - «MI», поскольку «ММ» - месяц):
SQL> SELECT TO_CHAR(TO_DATE('01-01-2020','DD-MM-YYYY'),'DD-MM-YYYY HH-MI') mydate
FROM DUAL;
MYDATE
----------------
01-01-2020 12-00
Обратите внимание, что в вашем примере временная часть вашей даты не указывается при вводе, поэтому по умолчанию используется полночь.Чтобы сохранить значение времени в столбце даты, вы должны указать значение времени во входных данных:
SQL> SELECT TO_CHAR(TO_DATE('01/01/2020 10:13','DD/MM/YYYY HH:MI'),'DD-MM-YYYY HH-MI') mydate
FROM DUAL;
MYDATE
----------------
01-01-2020 10-13
SQL>
В зависимости от того, что вы пытаетесь сделать, системную дату в Oracle можно получить по ссылке.на псевдостолбец SYSDATE:
SQL> SELECT TO_CHAR(sysdate,'MM/DD/YYYY HH:MI:SS AM') dt1,
2 TO_CHAR(sysdate,'DD-MON-YYYY HH24:MI:SS') dt2
3 FROM dual;
DT1 DT2
---------------------- -----------------------------
07/01/2011 03:44:30 PM 01-JUL-2011 15:44:30
SQL>
Итак, окольный ответ на ваш вопрос в том, что он полностью зависит от того, в каком формате находится ваша входная строка даты. Вы конвертируете это в тип даты Oracle с помощью модели форматирования ифункцию TO_DATE, затем преобразуйте элемент даты в формат отображения по вашему выбору через TO_CHAR и модель формата.Что касается команды «ALTER SESSION», на которую вы ссылались в своем вопросе, вы можете указать модель формата по умолчанию для преобразования дат, указав параметр NLS_DATE_FORMAT в команде ALTER SESSION:
SQL> SELECT sysdate FROM dual;
SYSDATE
---------
02-JUL-11
SQL> ALTER SESSION SET nls_date_format='dd-mon-yyyy hh24:mi:ss';
Session altered.
SQL> SELECT sysdate FROM dual;
SYSDATE
--------------------
02-jul-2011 10:39:24