SQL旧数据卡住并导致错误

时间:2018-11-19 22:20:06

标签: sql

所以我有一个小问题,我写了这段代码:

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'列” 即使我更改了要插入的值,它仍然会显示该错误 任何想法如何解决这个问题?

1 个答案:

答案 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'.