在数据库列中随时间保存数据
saving data with time in database column
从UI发送date
,然后在database
我可以看到date without timestamp
。当我这样做时
alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS'
那我也能看到timestamp
了。但它是特定于会话的。我希望这个改变永久有效。
我希望 timestamp
与 date
一起永久保存在数据库中。在日志文件中它只显示日期而不显示时间。
我需要在 database
中做哪些更改?我的理解有问题吗
您的意思是,针对整个数据库和所有用户?与您的 DBA 交谈,他们应该知道。那将是 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>
看起来不错。
但是:主题标题说:
saving data with time in database column
除非您“删除”时间部分(例如通过截断值,例如 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>
从UI发送date
,然后在database
我可以看到date without timestamp
。当我这样做时
alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS'
那我也能看到timestamp
了。但它是特定于会话的。我希望这个改变永久有效。
我希望 timestamp
与 date
一起永久保存在数据库中。在日志文件中它只显示日期而不显示时间。
我需要在 database
中做哪些更改?我的理解有问题吗
您的意思是,针对整个数据库和所有用户?与您的 DBA 交谈,他们应该知道。那将是 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>
看起来不错。
但是:主题标题说:
saving data with time in database column
除非您“删除”时间部分(例如通过截断值,例如 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>