【问题标题】:varchar data type to a datetime data type resulted in an out-of-range valuevarchar 数据类型转换为 datetime 数据类型导致值超出范围
【发布时间】: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


【解决方案1】:
INSERT INTO TABLE(A_BUNCH_OF_OTHER_COLUMNS, CONVERT(datetime, @INPUT, 101), MORE_COLUMNS) 

在这一部分中,您应该指定要插入值的表的列。您指定的 CONVERT 方法不是列。

【讨论】:

    【解决方案2】:

    如果这是 SQL Server,请添加标记。 @DT 是什么?是否有 A_BUNCH_OF_OTHER_COLUMNS | A_BUNCH_OF_OTHER_VALUES 日期时间?如果是这样,则可能存在转换问题。 – 亚历克斯 K。

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

    【讨论】:

      猜你喜欢
      • 2011-11-12
      • 2016-02-08
      • 2014-01-17
      • 2021-06-01
      • 1970-01-01
      相关资源
      最近更新 更多