varchar数据类型为datetime数据类型导致超出范围的值

时间:2017-09-29 14:18:38

标签: c# sql sql-server

所以我正在编写一个快速的控制台程序来从我公司的旧MySql数据库中收集数据行,并将行推送到新的Sql数据库。前300行左右一直很好,但突然间我得到了一个

  

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

我已经尝试了多种方法来转换我的日期时间,即使我将它放入选择时转换似乎没有任何问题。

IE:

DECLARE @INPUT varchar(30) = '09/25/2010 04:55:47'; 
SELECT CONVERT(datetime, @INPUT, 101);`

输出2010-09-25 04:55:47.000

转换错误仅出现在完整的Sql插入中:

DECLARE @INPUT varchar(30) = '09/25/2010 04:55:47'; 
INSERT INTO TABLE(A_BUNCH_OF_OTHER_COLUMNS, DATETIME_COLUMN, MORE_COLUMNS) 
          VALUES (A_BUNCH_OF_OTHER_VALUES, CONVERT(datetime, @INPUT, 101), MORE_VALUES);`

我认为没有理由不这样做,在询问了我的一些同事后,他们认为Sql没有任何问题。

编辑:修复INSERT以反映实际声明。

2 个答案:

答案 0 :(得分:1)

INSERT INTO TABLE(A_BUNCH_OF_OTHER_COLUMNS, CONVERT(datetime, @INPUT, 101), MORE_COLUMNS) 

在此部分中,您应指定要向其插入值的表的列。您指定了CONVERT方法,该方法不是列。

答案 1 :(得分:0)

  

如果这是SQL Server,请添加标记。什么是@DT?是否有任何A_BUNCH_OF_OTHER_COLUMNS | A_BUNCH_OF_OTHER_VALUES日期时间?如果是这样,转换问题很可能存在。 - Alex K。

这就是我的问题所在,其他3个日期时间字段的运行时间超过24小时