不同的日期格式到表格中的一种日期格式

时间:2017-11-25 03:36:53

标签: oracle date

我在表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)。

2 个答案:

答案 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