如何在Oracle 10g xe中插入日期?
我做了以下工作: 二, 三, 它给出了一个错误: ORA-01843:不是有效月份 但是,如果执行下面的操作,则没有问题: 查询:如何在Oracle 10g xe中插入日期?,oracle,oracle-xe,Oracle,Oracle Xe,我做了以下工作: 二, 三, 它给出了一个错误: ORA-01843:不是有效月份 但是,如果执行下面的操作,则没有问题: 查询: INSERT INTO BOOK VALUES('4','123459','INTRODUCTION TO Small Talk','IT',157.00,'S','**26-JAN-1991**',13,103); 有人能解释一下原因吗?这对我很有效。这意味着您的alter语句由于某种原因不起作用。但是,在使用文字时,在系统上采用特定的日期格式并不是一种好的
INSERT INTO
BOOK
VALUES('4','123459','INTRODUCTION TO Small Talk','IT',157.00,'S','**26-JAN-1991**',13,103);
有人能解释一下原因吗?这对我很有效。这意味着您的alter语句由于某种原因不起作用。但是,在使用文字时,在系统上采用特定的日期格式并不是一种好的做法。相反,在插入时使用格式掩码强制转换文本,例如:
INSERT INTO BOOK
VALUES('4','123459','INTRODUCTION TO Small Talk','IT',157.00,'S',
to_date('26-JAN-1991','DD-MON-YYYY'), 13,103);
(或者您需要的任何文本输入值格式)它对我很有用。这意味着您的alter语句由于某种原因不起作用。但是,在使用文字时,在系统上采用特定的日期格式并不是一种好的做法。相反,在插入时使用格式掩码强制转换文本,例如:
INSERT INTO BOOK
VALUES('4','123459','INTRODUCTION TO Small Talk','IT',157.00,'S',
to_date('26-JAN-1991','DD-MON-YYYY'), 13,103);
(或您需要作为文字输入值的任何格式)这是因为在您的数据库中,nls_date_time设置为'DD-MON-rrrrr'格式,您可以使用
从V$NLS\u参数中选择*
在这个查询中
插入账面价值('4','123459','SmallTalk简介','IT',157.00,'S','26-01-1991',13103)代码>
日期格式为“dd-mm-rrrrrr”,将语句更改为
插入账面价值('4','123459','SmallTalk简介','IT',157.00,'S',截至日期('26-01-1991','dd-mm rrrr'),13103)代码>
由于您现在提供了日期格式,因此它也将运行。这是因为在您的数据库中,nls_date_time设置为'DD-MON-rrrrr'格式,您可以使用
从V$NLS\u参数中选择*
在这个查询中
插入账面价值('4','123459','SmallTalk简介','IT',157.00,'S','26-01-1991',13103)代码>
日期格式为“dd-mm-rrrrrr”,将语句更改为
插入账面价值('4','123459','SmallTalk简介','IT',157.00,'S',截至日期('26-01-1991','dd-mm rrrr'),13103)代码>
由于您现在提供了日期格式,因此它也将运行。您想阅读手册的部分。备选方案包括:
- 使用日期文字:
date'1991-01-26'
- 从字符串转换为日期('26-01-1991','DD-MM-YYYY')
如果设置了NLS\u DATE\u FORMAT
,则可以省略TO\u DATE()
的第二个参数,但不能完全跳过该函数
另请参见:您想阅读本手册的章节。备选方案包括:
- 使用日期文字:
date'1991-01-26'
- 从字符串转换为日期('26-01-1991','DD-MM-YYYY')
如果设置了NLS\u DATE\u FORMAT
,则可以省略TO\u DATE()
的第二个参数,但不能完全跳过该函数
另请参见:当您设置
ALTER SESSION SET nls_date_format = 'DD-MM-YYYY HH24:MI:SS';
那么您的插入必须与此格式匹配,即
INSERT INTO BOOK VALUES('4','123459','INTRODUCTION TO SmallTalk','IT',157.00,'S',
'26-01-1991 00:00:00'
,13,103);
但是,更安全的方法是使用日期文字或to_date函数。当您设置
ALTER SESSION SET nls_date_format = 'DD-MM-YYYY HH24:MI:SS';
那么您的插入必须与此格式匹配,即
INSERT INTO BOOK VALUES('4','123459','INTRODUCTION TO SmallTalk','IT',157.00,'S',
'26-01-1991 00:00:00'
,13,103);
但是,更安全的方法是使用日期文字或to_date函数。您只需要使用
INSERT INTO TABLE_NAME VALUES('07-JAN-96');
Oracle始终采用“DD-MMM-YY”
格式。您应该将月份写为月份名称的前3个字符。您只需使用
INSERT INTO TABLE_NAME VALUES('07-JAN-96');
Oracle始终采用“DD-MMM-YY”
格式。您应该将月份写为月份名称的前3个字符。Oracle的默认NLS日期格式为'DD-MON-YYYY',但正如@OldProgrammer建议的那样,最好谨慎使用您选择的日期掩码来转换日期字符串。如果与具有不同默认日期格式的其他系统迁移代码或共享源代码,则信任隐式数据值转换(如字符串到日期的操作)可能会导致问题。Oracle的默认NLS日期格式为“DD-MON-YYYY”,但正如@OldProgrammer所建议的,最好谨慎一点,使用你选择的日期掩码来设置日期字符串。如果与具有不同日期格式默认值的其他系统迁移代码或共享源代码,则信任隐式数据值转换(如字符串到日期的操作)可能会导致问题。@Tunaki您能解释一下这个答案是否正确吗valid@Tunaki你能解释一下这个答案是否正确吗