То есть для всей базы данных и для всех пользователей? Поговорите со своим администратором баз данных, они должны это знать. Это будет параметр инициализации nls_date_format
.
В качестве альтернативы создайте триггер базы данных after logon
, который изменит это значение, например,
SQL> show user
USER is "SYS"
SQL> create or replace trigger trg_dflt_date_format
2 after logon on database
3 begin
4 execute immediate q'[alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss']';
5 end;
6 /
Trigger created.
Какой текущий формат?
SQL> select sysdate from dual;
SYSDATE
--------
13.07.20
ОК, выйдите из системы и войдите снова:
SQL> exit
Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
C:\temp>sqlplus scott/tiger
SQL*Plus: Release 11.2.0.2.0 Production on Pon Srp 13 16:55:08 2020
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL> select sysdate from dual;
SYSDATE
-------------------
13.07.2020 16:55:12
SQL>
Выглядит нормально.
Однако: topi c заголовок говорит:
сохранение данных со временем в столбце базы данных
Если вы не «удалите» компонент времени (например, усекая значение, например trunc(sysdate)
), Oracle сохранит дату и время. Именно так вы отображаете это.
Один вариант - использовать alter session
(как вы уже знаете), другой - использовать функцию to_char
с желаемой маской формата, например
SQL> select to_char(sysdate, 'hh24:mi:ss yyyy-mm-dd') right_now from dual;
RIGHT_NOW
-------------------
16:59:29 2020-07-13
SQL>