Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.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开发人员数据格式_Sql_Oracle_Datetime_Oracle Sqldeveloper_Sql Insert - Fatal编程技术网

Oracle SQL开发人员数据格式

Oracle SQL开发人员数据格式,sql,oracle,datetime,oracle-sqldeveloper,sql-insert,Sql,Oracle,Datetime,Oracle Sqldeveloper,Sql Insert,我在Oracle SQL Developer中创建了一个表“USER” CREATE TABLE USER( USER_ID INTEGER NOT NULL, FIRST_NAME VARCHAR2(50) NOT NULL, LAST_NAME VARCHAR2(50) NOT NULL, ID_CODE INTEGER NOT NULL, DATE_OF_BIRTH TIMESTAMP NOT NULL, TRAINING_CLUB VARCHAR2(50) NOT NULL, HA

我在Oracle SQL Developer中创建了一个表“USER”

CREATE TABLE USER(
USER_ID INTEGER NOT NULL,
FIRST_NAME VARCHAR2(50) NOT NULL, 
LAST_NAME VARCHAR2(50) NOT NULL,
ID_CODE INTEGER NOT NULL, 
DATE_OF_BIRTH TIMESTAMP NOT NULL,
TRAINING_CLUB VARCHAR2(50) NOT NULL, 
HAVE_LICENCE NUMBER(1) NOT NULL,
AGE_GROUP VARCHAR2(3) NULL, 
SPECIALITY VARCHAR2(100) NOT NULL,
COMMENT VARCHAR2(200) NULL,
CONSTRAINT USER_PK PRIMARY KEY (USER_ID)
);
现在我想在其中插入数据,但它只接受2000或更多的日期,并且当日期小于2000时,例如
'1998-13-07'
,它显示
不是有效的月份

INSERT INTO USER(USER_ID, FIRST_NAME, LAST_NAME, ID_CODE, DATE_OF_BIRTH, TRAINING_CLUB, HAVE_LICENCE, AGE_GROUP, SPECIALITY) VALUES (1, 'Mari', 'Mets', 4990713134, '1999-13-07', 'Erki Noole Athletics club', 1, 'U23', 'Sprint, hurdle race' );
INSERT INTO USER(USER_ID, FIRST_NAME, LAST_NAME, ID_CODE, DATE_OF_BIRTH, TRAINING_CLUB, HAVE_LICENCE, AGE_GROUP, SPECIALITY) VALUES (2, 'Meelis', 'Valgepea', 39704230213, '1997-23-04', 'Runningpartner', 1, 'M', 'Middle- ja long distance running');
INSERT INTO USER(USER_ID, FIRST_NAME, LAST_NAME, ID_CODE, DATE_OF_BIRTH, TRAINING_CLUB, HAVE_LICENCE, AGE_GROUP, SPECIALITY) VALUES (3, 'Karina', 'Justinov', 6020330872, '2002-30-03', 'SK Fortis', 1,'U20','Long and high jump');
INSERT INTO USER(USER_ID, FIRST_NAME, LAST_NAME, ID_CODE, DATE_OF_BIRTH, TRAINING_CLUB, HAVE_LICENCE, AGE_GROUP, SPECIALITY) VALUES (4, 'Lewis', 'Kordon', 38711120678, '1987-12-11', 'Niidupargi Athletics club', 1, 'M', 'Shot put');
INSERT INTO USER(USER_ID, FIRST_NAME, LAST_NAME, ID_CODE, DATE_OF_BIRTH, TRAINING_CLUB, HAVE_LICENCE, AGE_GROUP, SPECIALITY) VALUES (5, 'Getter', 'Tihhikov', 49802280417, '1998-28-02', 'Trainingpartner', 1, 'W','Long distance running');
INSERT INTO USER(USER_ID, FIRST_NAME, LAST_NAME, ID_CODE, DATE_OF_BIRTH, TRAINING_CLUB, HAVE_LICENCE, AGE_GROUP, SPECIALITY) VALUES (6, 'Andres', 'Allikvee', 50603212165, '2006-21-03', 'SK Lindon', 1, 'U16', 'Pole vault');
它显示将添加第3行和第6行,并且第1、2、4、5行的月份无效

create table users(
    user_id integer not null,
    date_of_birth timestamp not null
);

insert into users values (1, '1999-13-07');
-- ORA-01843: not a valid month
问题在于日期文字。我们为
时间戳
列提供一个文本字符串,因此如何解释它取决于数据库设置

我们可以明确地将字符串转换为时间戳,提供适当的格式规范:

into users values (1, to_timestamp('1999-13-07', 'YYYY-DD-MM'));
-- 1 rows affected
或者,我们可以更改当前会话的默认时间戳格式,以便正确隐式转换字符串:

alter session set nls_timestamp_format = 'YYYY-DD-MM';
insert into users values (2, '1999-13-07');
-- 1 rows affected

mysql和oracle是两个完全不同的数据库。哪一个?仅供参考,注释和用户是oracle中的保留字。作为旁白-
时间戳
不同于
日期
数据类型,它允许您存储小数秒。这对出生日期有意义吗?可能不会。因此,最好为该列使用
date
数据类型。请注意,这并不能直接解决您的问题-您可能会遇到相同的问题,原因相同(并且使用GMB的时间戳回答中所示的相同解决方法)。请参阅-尽管如@mathguy所说,鉴于人类出生通常需要一秒钟以上的时间,出生日期的小数秒可能会过多,另外,如果这是专门针对SQLDeveloper的,请参见工具>首选项>数据库>NLS并设置您想要的默认值。