Oracle 如何修复此错误';ORA-01843:不是有效月份';
我正在尝试使用以下查询创建表:Oracle 如何修复此错误';ORA-01843:不是有效月份';,oracle,Oracle,我正在尝试使用以下查询创建表: create table customer1 ( custmer_id number, Customer_name varchar(20), Expiry_date date default TO_DATE ('31-12-2009','dd-mon-RR') ) 结果是以下错误: Error report - ORA-01843: not a valid month 01843. 00000 - "not a valid month" *Cause:
create table customer1
(
custmer_id number,
Customer_name varchar(20),
Expiry_date date default TO_DATE ('31-12-2009','dd-mon-RR')
)
结果是以下错误:
Error report -
ORA-01843: not a valid month
01843. 00000 - "not a valid month"
*Cause:
*Action:
任何人都可以告诉我这件事。
谢谢。格式错误。既不是
12=mon
(它是mm
),也不是2009=RR
(它是RRRR
)
切换到
create table customer1
(
custmer_id number,
Customer_name varchar(20),
Expiry_date date default TO_DATE ('31-12-2009','dd-mm-RRRR')
)
错误的格式掩码。既不是
12=mon
(它是mm
),也不是2009=RR
(它是RRRR
)
切换到
create table customer1
(
custmer_id number,
Customer_name varchar(20),
Expiry_date date default TO_DATE ('31-12-2009','dd-mm-RRRR')
)
[TL;DR]使用日期文字:
CREATE TABLE customer1 (
custmer_id NUMBER,
Customer_name VARCHAR2(20),
Expiry_date DATE DEFAULT DATE '2009-12-31'
)
或MM
格式模型:
CREATE TABLE customer1 (
custmer_id NUMBER,
Customer_name VARCHAR2(20),
Expiry_date DATE DEFAULT TO_DATE ('31-12-2009','DD-MM-RRRR')
)
从Oracle的:
:月份(01-12;一月=01)MM
:月份的缩写名称MON
:月份名称,用空格填充以显示此元素使用的日期语言中最宽月份名称的宽度MONTH
也与MM
和MON
匹配李>MONTH
匹配MON
(反之亦然)李>MONTH
匹配RR
;及rrrrr
- 标点符号是可选的
dd-mon-RR
可以与以下任何格式匹配(带或不带连字符):
2009年12月31日
2009年12月31日
2009年12月31日
2009年12月31日
MON
格式模型与MM
格式不匹配,因此无法与字符串匹配
相反,您应该使用DD-MM-RR
(或DD-MM-RRRR
)格式模型,可以匹配(同样,有或没有连字符):
31-12-09
2009年12月31日
2009年12月31日
31-12-2009
2009年12月31日
2009年12月31日
- 使用日期文字
(它仅使用ISO-8601日期格式,因此跳过输入与格式模型不匹配的问题);或日期“2009-12-31”
- 使用“格式精确”
格式模型修饰符FX
,这将阻止应用字符串到日期的转换规则,并要求输入与格式模型完全匹配到日期('31-12-2009','FXDD-MM-RRRR')
CREATE TABLE customer1 (
custmer_id NUMBER,
Customer_name VARCHAR2(20),
Expiry_date DATE DEFAULT DATE '2009-12-31'
)
或MM
格式模型:
CREATE TABLE customer1 (
custmer_id NUMBER,
Customer_name VARCHAR2(20),
Expiry_date DATE DEFAULT TO_DATE ('31-12-2009','DD-MM-RRRR')
)
从Oracle的:
:月份(01-12;一月=01)MM
:月份的缩写名称MON
:月份名称,用空格填充以显示此元素使用的日期语言中最宽月份名称的宽度MONTH
也与MM
和MON
匹配李>MONTH
匹配MON
(反之亦然)李>MONTH
匹配RR
;及rrrrr
- 标点符号是可选的
dd-mon-RR
可以与以下任何格式匹配(带或不带连字符):
2009年12月31日
2009年12月31日
2009年12月31日
2009年12月31日
MON
格式模型与MM
格式不匹配,因此无法与字符串匹配
相反,您应该使用DD-MM-RR
(或DD-MM-RRRR
)格式模型,可以匹配(同样,有或没有连字符):
31-12-09
2009年12月31日
2009年12月31日
31-12-2009
2009年12月31日
2009年12月31日
- 使用日期文字
(它仅使用ISO-8601日期格式,因此跳过输入与格式模型不匹配的问题);或日期“2009-12-31”
- 使用“格式精确”
格式模型修饰符FX
,这将阻止应用字符串到日期的转换规则,并要求输入与格式模型完全匹配到日期('31-12-2009','FXDD-MM-RRRR')
日期'2009-12-31'
或至日期('31-12-2009','dd-mm-YYYY')
-我只喜欢RR
两位数字,但由于我在计算机上工作超过18年,实际上我根本不使用RR
)或日期文字,即日期'2009-12-31'
或至日期('31-12-2009','dd-mm-YYYY')
-我只喜欢两位数的RR
,但由于我在计算机上工作了18年多,实际上我根本不使用RR
:-)