所以我有一个小问题,我写了这段代码:
CREATE TABLE Inscription (
ID_Societe VarChar(25) NOT NULL, #ID de la societe (auto generé)
Nom_Societe VarChar(15), #Nom de la societe (provided as an argument when calling inscription method)
PRIMARY KEY (ID_Societe)
);
INSERT INTO Inscription (ID_Societe, Nom_Societe)
VALUES ('S152', 'Renault');
CREATE TABLE Paiement (
ID_Paiement VarChar(25), #clé primaire (auto generated)
ID_Societe VarChar(25), # clé secondaire
Montant float, #montant a déduire du compte (provided as argument)
N_Carte VarChar(25), #provided as argument (4 4 numbers seperated by spaces)
Date_Exp Date, #provided as argument format:DD-MM-YYYY
Nom_Carte VarChar(25), #name of owner of card (not necessairly the buyer)
Date_Trans Date, #Date of transaction ( a java command that gives todays date then reformat ?)
Statut VarChar(25) #(Status is a keyword, but what is this ? state of bank account, state of card ? ask prof)
);
INSERT INTO Paiement (ID_Paiement, ID_Societe, Montant, N_Carte, Date_Exp, Nom_Carte, Date_Trans, Statut)
VALUES ('P1526', 'S152', 165.99, '5244 5698 1523 6948', 2020-12-10, 'Mouad ElKhabri', 2018-07-12,'i don\'t even know');
我遇到的问题是插入,Date_Exp我使用了11-12-1984的旧值,我搞砸了并使用了欧盟日期格式,它显示了一个错误:“数据截断:错误的日期值:'1984 '代表第1行的'Date_Exp'列” 即使我更改了要插入的值,它仍然会显示该错误 任何想法如何解决这个问题?
答案 0 :(得分:0)
您的日期文字必须用单引号引起来。否则,它只是在做数学运算并返回要存储在日期列中的整数(这既不是您想要的,也不是数据库想要的)。
尝试:
VALUES ('P1526', 'S152', 165.99, '5244 5698 1523 6948', '2020-12-10', 'Mouad ElKhabri', '2018-07-12','i don\'t even know');
如果您想变得非常明确,可以将此日期文字转换为日期,作为CAST('2020-12-10' AS DATE)
之类的插入内容的一部分,但这太过分了。只需使用带有单引号的ANSI标准日期格式插入,就可以了。
也..(我猜这里,因为您没有共享正在使用的数据库产品,并且它们之间的差异很大),您可能需要在
中转义单引号'i don\'t even know'
不是带有反斜杠,而是带有第二个单引号,例如:
'i don''t even know'.