Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
Sql 违反Oracle生日列正则表达式约束_Sql_Oracle_Date_Oracle Sqldeveloper - Fatal编程技术网

Sql 违反Oracle生日列正则表达式约束

Sql 违反Oracle生日列正则表达式约束,sql,oracle,date,oracle-sqldeveloper,Sql,Oracle,Date,Oracle Sqldeveloper,我希望数据库中的所有日期采用以下yyyy mm dd日期格式。例如,“2020-05-28”。但是,当我在包含生日列的用户表中插入日期时,这似乎并不像我想象的那样有效 以下是我的生日专栏: birthday DATE NOT NULL CHECK (REGEXP_LIKE(birthday , '\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])*')), 当我尝试插入“2020-05-28”或任何其他日期时,会出现以下错误: 02290. 0

我希望数据库中的所有日期采用以下yyyy mm dd日期格式。例如,“2020-05-28”。但是,当我在包含生日列的用户表中插入日期时,这似乎并不像我想象的那样有效

以下是我的生日专栏:

birthday DATE NOT NULL CHECK (REGEXP_LIKE(birthday , '\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])*')),
当我尝试插入“2020-05-28”或任何其他日期时,会出现以下错误:

02290. 00000 -  "check constraint (%s.%s) violated"
*Cause:    The values being inserted do not satisfy the named check

*Action:   do not insert values that violate the constraint.

您错误地解释了
DATE
数据类型的概念。可能是混合了日期的显示格式(显示
日期
值时看到的值)及其内部表示形式

日期就是一个日期。它以某种特定于数据库的格式存储在内部,您无需担心。因此,不需要使用检查约束来控制格式

无论何时需要显示日期,都可以使用函数
to_char()
将其格式化为字符串,如:

to_char(birthday, 'yyyy-mm-dd')
您还可以设置会话参数
NLS_DATE_FORMAT
,以便在显示时,所有日期都自动以给定格式格式化:

alter session set nls_date_format = 'yyyy-mm-dd';

您错误地解释了
DATE
数据类型的概念。可能是混合了日期的显示格式(显示
日期
值时看到的值)及其内部表示形式

日期就是一个日期。它以某种特定于数据库的格式存储在内部,您无需担心。因此,不需要使用检查约束来控制格式

无论何时需要显示日期,都可以使用函数
to_char()
将其格式化为字符串,如:

to_char(birthday, 'yyyy-mm-dd')
您还可以设置会话参数
NLS_DATE_FORMAT
,以便在显示时,所有日期都自动以给定格式格式化:

alter session set nls_date_format = 'yyyy-mm-dd';