【发布时间】:2017-09-29 14:18:37
【问题描述】:
所以我正在编写一个快速控制台程序来从我公司拥有的旧 MySql 数据库中收集数据行并将这些行推送到新的 Sql 数据库。前 300 行左右很好,但突然间我得到了一个
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。
我现在尝试了多种方法来转换我的日期时间,即使当我将其放入选择中时转换似乎没有任何问题。
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 以反映实际语句。
【问题讨论】:
-
如果是 SQL Server 请添加标签。
@DT是什么?有没有A_BUNCH_OF_OTHER_COLUMNS|A_BUNCH_OF_OTHER_VALUES日期时间?如果是这样,则可能存在转换问题。 -
那是因为您的日期无效。将所有日期传输为 varchars,然后
select * from MuhDateTest where isdate(muhdate) = 0
标签: c# sql sql-server