【问题标题】:Change column data type in SQL Server更改 SQL Server 中的列数据类型
【发布时间】:2021-08-09 14:03:30
【问题描述】:

我有这个列 EndDate (date, null) 在一个空表中。

我正在尝试将其类型更改为INT,使用以下代码:

ALTER TABLE [Schema].[Table] 
    ALTER COLUMN [EndDate] INT NULL;

在本例中,实际的架构和表名已更改为“架构”和“表”。

这是我得到的错误:

消息 206,第 16 级,状态 2,第 42 行
操作数类型冲突:日期与 int 不兼容

有人知道这是为什么吗?

谢谢!

【问题讨论】:

  • 因为您不能直接将date 转换为int
  • 如果表是空的 - 你不能删除列并使用INT 数据类型重新创建它吗?而且:WHY你想将日期存储为INT ?!?!? 更有意义使用DATE 约会.....
  • 为什么要创建一个名为EndDateint 的列?如果是int,则根据定义不是日期。
  • 但他它是空的 :-)
  • 一开始这似乎是个坏主意。如果你真的有数据来表示Date 值,那么我保证Date 类型真的会比int 好得多。

标签: sql-server ssms


【解决方案1】:

空表确实会出现此错误。

有人知道这是为什么吗?

只是一个实现细节。 ATLER COLUMN 在开始实际转换列数据的过程之前检查类型转换兼容性并发现没有行。

【讨论】:

    猜你喜欢
    • 2016-10-22
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    相关资源
    最近更新 更多