Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle日期-SQL plus-更改INSERT语句中使用的日期格式_Sql_Oracle_Date_Sqlplus - Fatal编程技术网

Oracle日期-SQL plus-更改INSERT语句中使用的日期格式

Oracle日期-SQL plus-更改INSERT语句中使用的日期格式,sql,oracle,date,sqlplus,Sql,Oracle,Date,Sqlplus,我试图通过sqlplus运行一个包含以下insert语句的脚本 INSERT INTO mytable VALUES('423234','test',NULL,'05-DEC-2012 18:30:03.000000'); INSERT INTO mytable VALUES('2343423','test',NULL,'05-DEC-2012 18:30:03.000000'); INSERT INTO mytable VALUES('234234','test',NULL,'05-DEC-2

我试图通过sqlplus运行一个包含以下insert语句的脚本

INSERT INTO mytable
VALUES('423234','test',NULL,'05-DEC-2012 18:30:03.000000');
INSERT INTO mytable
VALUES('2343423','test',NULL,'05-DEC-2012 18:30:03.000000');
INSERT INTO mytable
VALUES('234234','test',NULL,'05-DEC-2012 18:30:03.000000');
INSERT INTO mytable
VALUES('234234','test',NULL,'05-DEC-2012 18:30:03.000000');
INSERT INTO mytable
VALUES('2342343','test',NULL,'05-DEC-2012 18:30:04.000000');
运行脚本时,出现以下错误:

ERROR at line 2:
ORA-01849: hour must be between 1 and 12
我认为这只是NLS_DATEFORMAT参数的一个问题,我所要做的就是在会话中更改它,它就会工作。问题是我不能得到正确的格式

这是我尝试过的,但我得到了一个无法识别的日期格式错误

alter session  set NLS_DATE_FORMAT='DD-MON-YYYY HH24:MI:SS.FF';
上述模式是否适用于日期
'05-DEC-2012 18:30:04.000000'

顺便说一下,脚本在SQLDeveloper上运行良好


谢谢

您很接近,但您需要:

通常,最好不要依赖NLS设置和隐式转换,而是执行显式转换:

INSERT INTO mytable
VALUES('2342343','test',NULL,
  TO_TIMESTAMP('05-DEC-2012 18:30:04.000000', 'DD-MON-YYYY HH24:MI:SS.FF');

最好也明确列出这些列,以便将来进行更改,并且更容易检查是否按正确的顺序排列了值。

列是
日期还是
时间戳
FF
格式元素不能识别为
DATE
,因为它不支持小数秒。该列被定义为时间戳(6)。您永远不应该依赖隐式数据类型转换(以及隐式NLS设置)。您应该使用ANSI日期文字或带有格式掩码的
to_date()
函数来指定日期值。
INSERT INTO mytable
VALUES('2342343','test',NULL,
  TO_TIMESTAMP('05-DEC-2012 18:30:04.000000', 'DD-MON-YYYY HH24:MI:SS.FF');