【问题标题】:Converting a table Colum from datetime2 to datetime将表列从 datetime2 转换为 datetime
【发布时间】:2013-08-02 11:40:42
【问题描述】:

我被分配了一项任务,我需要将 40 个表列从 datetime2 转换为 datetime。

这是我的数据库中的日期时间格式。2007-11-12 00:00:00

它包含超过 90,000 条记录

请帮忙

【问题讨论】:

  • 格式无关。日期是数字,而不是字符串。

标签: sql datetime datetime2


【解决方案1】:
  • 您必须检查您的值是否小于 1753 年 1 月 1 日(因为它们与 datetime 不兼容)。例如

SELECT * FROM MyTable WHERE MyColumn

  • 您必须决定如何处理这些值,例如(这里我将所有

UPDATE MyTable SET MyColumn = '1753-01-01' WHERE MyColumn

  • 修改列的类型

ALTER TABLE MyTable ALTER COLUMN MyColumn DATETIME

【讨论】:

    【解决方案2】:

    这只是 rediculos,datetime2 更准确,它有更大的 daterange 并且占用相同的字节数 (8)。

    这里是 mssql 的代码:

    alter table tablename alter column colname datetime
    

    【讨论】:

    • 如果此方法由于某种原因不起作用,您可以随时添加一列,从旧列更新,删除旧列并重命名新列。
    • @DanBracuk 旧列是 datetime2,这会起作用,尽管它可能会丢失一些精度
    • 可能有不可能的日期:值 datetime 的最小日期)
    • @xanatos 很好发现,这会导致超出范围的错误并失败
    • 它将适用于那些允许您直接更改数据类型的数据库引擎。我使用的是 redbrick,但它没有。
    猜你喜欢
    • 2012-06-20
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 2015-05-01
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多