【问题标题】:SQL Server: date incompatible with int when migrating from mysql. How to solve?SQL Server:从 mysql 迁移时日期与 int 不兼容。怎么解决?
【发布时间】:2014-09-05 13:56:44
【问题描述】:

我有类似的数据库,它们来自同一个 CMS,但它们使用不同的数据库:一些最初是 SQL Server,另一个是 MySQL。

我不得不将 MySQL 数据库迁移到 SQL Server,因为我已经为 SQL Server 准备了一些脚本。 a 不想转换,b。转换起来比较复杂,因为我使用的一些函数没有在 MySQL 中实现。

这个对最初是 SQL Server 的数据库的查询运行没有问题:

SELECT Birth_Date+1 FROM TABLENAME

而,当我在从 SQL 迁移的数据库中的同一个表上运行它时,我收到此错误:

操作数类型冲突:日期与 int 不兼容

知道为什么会出现此错误以及如何解决它吗?

如果有帮助,我使用 SSMA(SQL Server 迁移助手)迁移了我的数据库。

谢谢。

【问题讨论】:

    标签: mysql sql-server date int migration


    【解决方案1】:

    消息很清楚,您不能将+ 运算符与日期和整数一起使用。

    您应该使用DATEADD 函数(在 Sql Server 中)

    DATE_ADD 在 mysql 中。

    例如DATE_ADD(Birth_Date, interval 1 DAY)

    这是

    DATEADD(day, 1, Birth_Date) 在 SQL Server 中

    【讨论】:

      【解决方案2】:

      错误似乎很明显。您不能将整数添加到 date,但可以将整数添加到 datetime。据推测,Birth_Date 的数据类型在一个数据库中是 date,而在另一个数据库中是 datetime(或类似的东西)。

      这里有两种解决方案:

      SELECT cast(Birth_Date as datetime)+1 FROM TABLENAME;
      
      SELECT dateadd(day, 1, Birth_Date) FROM TABLENAME;
      

      【讨论】:

      • 你好,戈登,实际上这是一个类型问题。要么我有日期作为类型,而不是日期时间,要么是我不知道的 datetime2(0) 类型。我会尝试重新迁移或解决演员阵容。谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      相关资源
      最近更新 更多