由于类型转换失败,密钥违规等原因,无法运行SQL查询

时间:2017-05-12 00:28:04

标签: sql ms-access

尝试在MS Access中运行此SQL查询时出错:

INSERT INTO Learner (learnerPersonIDPKFK, registrationDate)
VALUES (1, 21/09/2015);

INSERT INTO Learner (learnerPersonIDPKFK, registrationDate, recommendedByLearnerPersonIDFK)
VALUES (2, 05/03/2016, 1);

这是错误:

enter image description here

Learner表如下所示:

CREATE TABLE Learner
(
      learnerPersonIDPKFK INT NOT NULL PRIMARY KEY,
      registrationDate DATETIME,
      recommendedByLearnerPersonIDFK INT NOT NULL,

      CONSTRAINT fk_recommendedByLearnerPersonIDFK
          FOREIGN KEY(recommendedByLearnerPersonIDFK)
          REFERENCES Learner (learnerPersonIDPKFK)
);

1 个答案:

答案 0 :(得分:0)

尝试用单引号包装日期:

INSERT INTO Learner (learnerPersonIDPKFK, registrationDate)
    VALUES (1, '21/09/2015');
INSERT INTO Learner (learnerPersonIDPKFK, registrationDate, recommendedByLearnerPersonIDFK)
    VALUES (2, '05/03/2016', 1);

根据DATETIME格式的本地化设置,您可能需要使用MM / DD / YYYY格式。请记住,您传入varchar并让SQL尝试“猜测”如何隐式转换它:

INSERT INTO Learner (learnerPersonIDPKFK, registrationDate)
    VALUES (1, '09/21/2015');
INSERT INTO Learner (learnerPersonIDPKFK, registrationDate, recommendedByLearnerPersonIDFK)
    VALUES (2, '03/05/2016', 1);

使用简单的测试人员验证SQL是否可以“猜测”您的日期格式化:

SELECT CAST('09/21/2015' AS DATETIME)