我需要在日期中使用4位数的年份来建立一个以历史事实为中心的数据库(例如贝多芬的出生(1700年代)/死亡(19世纪)日期)。我似乎无法弄清楚如何使用INSERT语句输入此信息。这是我到目前为止所得到的,但显然它不起作用......
CREATE TABLE musicians (
id NUMBER(5) PRIMARY KEY,
first_name VARCHAR2(30) NOT NULL,
last_name VARCHAR2(30) NOT NULL,
pri_inst VARCHAR2(15) NOT NULL,
born DATE NOT NULL,
died DATE
);
INSERT INTO musicians (
inc_mus_id.nextval, 'Ludwig', 'van Beethoven', 'Piano', '16-Dec-1770', '26-Mar-1827')
思想?
编辑:这是实际的错误消息:ORA-01747:user.table.column,table.column或列规范无效。
编辑2:还试过这个: INSERT INTO音乐家( inc_mus_id.nextval,'Ludwig','van Beethoven','Piano',TO_DATE('16 -Dec-1770','dd-Mon-RRRR'),TO_DATE('26 -Mar-1827','dd-Mon -RRRR'))
编辑3:解决了!谢谢@Rene!此外,可以在没有TO_DATE函数的情况下执行此操作,日期格式为:'16 / Dec / 1770'。
答案 0 :(得分:3)
ORA-01747
错误是因为您忘记了括号前的VALUES
关键字。
更有效的插入日期的方法是使用ANSI Date literal:
INSERT INTO musicians VALUES (
inc_mus_id.nextval,
'Ludwig',
'van Beethoven',
'Piano',
DATE '1770-12-16',
DATE '1827-03-26'
)
或使用TO_DATE
INSERT INTO musicians VALUES (
inc_mus_id.nextval,
'Ludwig',
'van Beethoven',
'Piano',
TO_DATE( '16-Dec-1770', 'DD-Mon-YYYY' ),
TO_DATE( '26-Mar-1827', 'DD-Mon-YYYY' )
)
答案 1 :(得分:2)
问题似乎与日期无关,但语法错误。 试试这个:
insert into musicians
(id
,first_name
,last_name
,pri_inst
,born
,died)
values
(inc_mus_id.nextval
,'Ludwig'
,'van Beethoven'
,'Piano'
,to_date('16-Dec-1770', 'dd-Mon-RRRR')
,to_date('26-Mar-1827', 'dd-Mon-RRRR'));