我在表oracle数据库(12c)中有两个DATE列.sysdate格式为:
SQL> select sysdate from dual;
SYSDATE
---------
25-NOV-17
SQ>desc test_table
id NUMBER(10)
LAST_CREATED_DATE DATE
IS_CREATED_DATE DATE
其中LAST_CREATED_DATE具有与IS_CREATED_DATE(sysdate)不同的格式。 因为LAST_CREATED_DATE是固定的,我正在从文件中读取(日期格式:20100330),其中IS_CREATED_DATE作为sysdate(当前日期)插入。
insert into test_table (id,LAST_CREATED_DATE,IS_CREATED_DATE) values (123,20100930,sysdate);
但是这个插入语句面临错误。 我尝试了 ALTER SESSION SET NLS_DATE_FORMAT ='yyyymmdd'; 。这在当前会话中工作正常,但是我可以通过哪些方式将ORACLE数据库日期格式更改为yyyymmdd(linux)。
答案 0 :(得分:2)
你应该改变你的陈述:
insert into test_table (id,LAST_CREATED_DATE,IS_CREATED_DATE)
values (123,to_date('20100930','yyyymmdd'),sysdate);
答案 1 :(得分:0)
有三种方法可以完成此任务:
1)
SQL>conn myschema/mypwd
SQL>insert into test_table values(123,to_date('20100930','yyyymmdd'),sysdate);
2)如你所说
SQL>alter session set nls_date_format = 'yyyymmdd';
SQL>insert into test_table values(123,'20100930',sysdate); -- notice that 20100930 is quoted
3)全局(与数据库一起,需要重新启动,在生产系统上可能与现有应用程序的日期格式模型协调一致)
SQL>conn / as sysdba
SQL>alter system set nls_date_format = 'yyyymmdd' scope=spfile;
SQL>shutdown immediate;
SQL>startup;
SQL>conn myschema/mypwd
SQL>insert into test_table values(123,'20100930',sysdate); -- from now on, you don't need to alter your date parameter for every session