Varchar转换导致某些插入范围超出范围[重复]

问题描述 投票:0回答:1

我正在尝试将值插入表中。目前有80个插入语句。 其中74个工作得很好。其中6个我收到以下错误:

将varchar数据类型转换为日期时间数据类型会导致超出范围的值。

我不知道为什么,因为它们与其他人没有什么不同。 以下是一些示例数据:

CREATE TABLE Chair
(
  ChairID INT,
  RoomID INT,
  xyz INT,
  zyx INT,
  time DATETIME,
  CONSTRAINT pkChar PRIMARY KEY(ChairID, RoomID,time)
);

这些插入语句有效:

INSERT INTO Chair
  VALUES (1,1,1,32,CONVERT(DATETIME,'12.01.2017 08:32:12'));
INSERT INTO Chair
  VALUES (1,1,0,50,CONVERT(DATETIME,'12.01.2017 08:33:12'));

这些似乎不起作用:

INSERT INTO Chair
  VALUES (2,1,1,63,CONVERT(DATETIME,'16.02.2017 08:00:34'));  
INSERT INTO Chair
  VALUES (2,1,0,91,CONVERT(DATETIME,'16.02.2017 08:54:12'));

我很感谢任何解决这个问题的方法!

sql-server visual-studio
1个回答
3
投票

该错误是因为您的会话DATEFORMAT设置不是DMY。执行DBCC USEROPTIONS进行验证。

我建议您使用ISO16601格式,如'2017-02-16T08:54:12',以避免歧义和对会话设置的依赖。

© www.soinside.com 2019 - 2024. All rights reserved.