我正在创建一个数据库,我试图用值填充表,但我得到了错误。
Msg 241,第16级,状态1,第3行 从字符串转换日期和/或时间时,转换失败。
查询代码:
INSERT INTO Register_of_crimes (id_crime , Date, List_of_crime , Fine)
VALUES ('1', '1989-3-6', 'Rušenie nočného kľudu', '30'),
('2', '1991-3-3', 'Poškodzovanie cudzej veci', '50'),
('3', '2011-3-3', 'Pitie alkoholu na verejnosti', '20'),
('4', '1999-6-5', 'Výtržnosti na verejnosti', '40')我创建的表:
CREATE TABLE Register_of_crimes
(
id_crime int,
Date date,
List_of_crime varchar (150),
Fine money,
PRIMARY KEY (id_crime)
)谢谢你所有的回答和建议
发布于 2022-01-18 15:31:33
您应该实际使用19910303,而不是破折号。
Server在大多数语言中将1991-03-03解释为YYYY-DD-MM,如下所示:
SET LANGUAGE Deutsch;
SELECT CONVERT(datetime, '1991-03-13');结果:
会员国242,第16级,第3状态 Bei der Konvertierung eines varchar-Datentyps in einen datetime-Datentyp liegt der Wert au erhalb des gültigen Bereichs。
(如果转换为date,它实际上工作得很好,但这是一个例外,最好始终保持相同的、毫不含糊的格式。)
您还应该确保可能包含Unicode字符的字符串以正确的数据类型(可能是正确的排序规则)声明,并且所有字符串文本都以N作为前缀。以及不被字符串分隔符包围的整数。所以我希望:
List_of_crime nvarchar(150)
--------------^...and...
VALUES (1, '19890306', N'Rušenie nočného kľudu', 30)发布于 2022-01-18 15:33:58
使用明确的日期和时间格式。在Server中,它们是yyyyMMdd和yyyy-MM-ddThh:mm:ss.nnnnnnn。另外,当数据类型是数字的时候,不要用单引号(')包装它们,这是用于文字字符串的。我假设您的值是yyyy-M-d格式的。
INSERT INTO Register_of_crimes (id_crime , Date, List_of_crime , Fine)
VALUES (1,'19890306','Rušenie nočného kľudu', 30),
(2,'19910303','Poškodzovanie cudzej veci',50),
(3,'20110303','Pitie alkoholu na verejnosti',20),
(4,'19990605','Výtržnosti na verejnosti',40);另外,您可能会发现,您为List_of_crime插入的值由于字符在代码页之外而遭受数据丢失(例如,ľ可能被隐式转换为l)。如果是这种情况,则需要对表进行ALTER,以便List_of_crime是nvarchar,然后使用nvarchar文本字符串,例如N'Rušenie nočného kľudu'。
https://stackoverflow.com/questions/70757936
复制相似问题