【问题标题】:SQL Server - Deleting rows between a date range using SQL. Date conversion failsSQL Server - 使用 SQL 删除日期范围之间的行。日期转换失败
【发布时间】:2015-10-14 07:56:43
【问题描述】:
DELETE FROM BIZ 
WHERE [Orgnl_Cmpltn_Date]
      BETWEEN '2014-02-31'  AND '2014-04-01'

这是我写的DELETE 声明。有一个错误说:

从字符串转换日期和/或时间时转换失败。

我知道我必须编写正确的日期格式,但我不确定这是怎么回事。

这个问题没有在其他地方得到回答,因为我看到的答案没有指定日期格式(在我要求的上下文中)

【问题讨论】:

  • 这适用于哪个 RDBMS?请添加标签以指定您使用的是mysqlpostgresqlsql-serveroracle 还是db2 - 或其他完全不同的东西。
  • 鉴于错误文本,我强烈怀疑这是sql-server,但最好让OP先确认。
  • 2 月 31 日不存在...
  • 也不要使用 BETWEEN 作为日期范围,太危险了。您是否打算删除任何日期为“2014-04-01”的记录,还是应该保留这些记录?如果有像 '2014-04-01 23:58:12.1234567' 这样的值会发生什么?

标签: sql sql-server sql-server-2008 datetime sql-delete


【解决方案1】:

你写的是 2 月 31 日……也许……那个日期不存在。

DELETE FROM BIZ 
WHERE [Orgnl_Cmpltn_Date]
BETWEEN '2014-02-28'  AND '2014-04-01'

关于转换日期的一般概念:

DELETE FROM BIZ 
WHERE [Orgnl_Cmpltn_Date]
BETWEEN CONVERT(date,'2014.02.28',102) and CONVERT(date,'2014.04.01',102)

在这里您可以找到CONVERT 的第三个参数的完整值列表 https://msdn.microsoft.com/en-us/library/ms187928.aspx

【讨论】:

  • 哦,哇!感谢 Galma88。你是个天才。该日期不存在。
  • 这确实有效。谢谢你。为了将来,我如何指定日期格式
  • 您使用的是哪个 RDBMS?
【解决方案2】:

改用这个

DELETE FROM BIZ
WHERE [Orgnl_Cmpltn_Date] >= '2014-02-28'
AND [Orgnl_Cmpltn_Date] <= '2014'04'01'

我不知道这是否重要,但二月只有 28 或 29 天。

【讨论】:

    【解决方案3】:

    我假设你使用 SQL Server,试试这个..

        DELETE FROM BIZ 
        WHERE CONVERT(DATE,[Orgnl_Cmpltn_Date])
        BETWEEN CONVERT(DATE,'2014-02-28') AND CONVERT(DATE,'2014-04-01')
    

    【讨论】:

      【解决方案4】:

      几件事

      1) 没有 2 月 31 日这样的日期,这可能是个问题。

      2) 如果您将日期范围设置为以下格式,您可能会有更多的运气:

      BETWEEN '20140228'  AND '20140401'
      

      让我知道你的进展:-)

      【讨论】:

      • 这对于 mssql 来说是一种很好的日期文字格式,但对于其他 dbms 却不是,
      【解决方案5】:

      您可以使用以下代码:

      DELETE from Tabel_Name WHERE Date BETWEEN CONVERT(datetime,'01/01/2001',103) and CONVERT(datetime,'31/12/2001',103)
      

      【讨论】:

      • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
      • edit您的答案,以确保它改进了此问题中已有的其他答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-20
      • 1970-01-01
      • 2021-06-15
      相关资源
      最近更新 更多