这个 SQL 查询有啥问题[重复]

Posted

技术标签:

【中文标题】这个 SQL 查询有啥问题[重复]【英文标题】: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 的类型是什么? dba.stackexchange.com/questions/86313/…检查这个问题 为了让我们正确回答您的问题,我们需要知道 dtpDate 的格式,所以请回显一两个 dtpDate 类型的日期,以便我们比较格式。跨度> 【参考方案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)

【讨论】:

以上是关于这个 SQL 查询有啥问题[重复]的主要内容,如果未能解决你的问题,请参考以下文章

有啥办法可以缩短这个 SQL 查询

在这个 SQL 查询中 Tmp(email) 有啥用?

SQL 中的 UNION 和UNION ALL 有啥区别?

使用dapper时动态拼接查询sql有啥好的方法吗

在已提交读事务与可重复读事务中执行单个选择查询有啥区别?

有啥办法可以优化这个 SQL 语句?