【问题标题】:What is wrong with this SQL Query [duplicate]这个 SQL 查询有什么问题[重复]
【发布时间】:2016-04-29 09:52:28
【问题描述】:

我正在清理数据库,但出现此错误。我要删除不到 6 个月的数据。

查询:

Delete from dbo.Jobs 
where dtpDate <= '2016-04-27 15:23:00.000' 

错误:

消息 242,第 16 级,状态 3,第 1 行
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。

类型是日期时间

【问题讨论】:

  • dtpDate 的类型是什么?
  • 为了让我们正确回答您的问题,我们需要知道 dtpDate 的格式,所以请回显一两个 dtpDate 类型的日期,以便我们比较格式。跨度>

标签: sql sql-server


【解决方案1】:

尝试向查询添加强制转换。

CAST( '2016-04-27 15:23:00.000' AS DATETIME)

【讨论】:

    【解决方案2】:

    您的服务器可能具有与yyyy-mm-dd 不兼容的日期格式设置。您可以尝试通过使用与 ODBC 语言环境无关的转义序列来强制执行该格式,例如

    delete from dbo.Jobs where dtpDate <= {ts'2016-04-27 15:23:00.000'}
    

    或 ODBC 转换格式,例如

    delete from dbo.Jobs where dtpDate <= convert(datetime, '2016-04-27 15:23:00.000', 120)
    

    【讨论】:

      【解决方案3】:
      DELETE FROM dbo.Jobs 
            WHERE dtpDate <= CAST('2016-04-27 15:23:00.000' AS DATETIME)
      

      【讨论】:

        猜你喜欢
        • 2011-01-15
        • 2010-10-21
        • 1970-01-01
        • 2015-08-08
        • 1970-01-01
        • 1970-01-01
        • 2011-09-28
        相关资源
        最近更新 更多