代码之家  ›  专栏  ›  技术社区  ›  dtc

什么会导致“将char数据类型转换为datetime数据类型导致超出范围”?

  •  0
  • dtc  · 技术社区  · 15 年前

    我遇到了一个错误,我很难弄清楚。

    我有两个表,正在尝试将数据从一个表复制到另一个表(简化视图):

    MyTable
    -------
    ID varchar(11) do not allow nulls
    Field01 numeric(6,0) allow nulls
    
    MyTable_Temp
    ------------
    ID varchar(11) do not allow nulls
    Field01 numeric(6,0) allow nulls
    

    我的查询如下:

    DELETE FROM dbo.MyTable
    INSERT INTO dbo.MyTable([ID],[Field01])
    SELECT ID, Field01 FROM [dbo].MyTable_Temp WITH (NOLOCK)
    

    但是,当我运行查询时,它会引发此错误:

    MSG 242,16级,状态3,程序TRG U MYTABLE,第6行 将char数据类型转换为datetime数据类型导致datetime值超出范围。

    如果我对查询的field01部分进行注释,它将正常运行。数字字段如何引发日期时间错误?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Ken Keenan    15 年前

    在我看来,目标表上触发了某种类型的触发器(trg_mytable是一个赠品),它可能正在做一些事情,比如在某个地方将一个时间戳记录插入到审计表中,从而使人困惑。