【问题标题】:Why were all rows deleted when trying to delete old rows with date query为什么尝试使用日期查询删除旧行时所有行都被删除
【发布时间】:2020-12-21 13:19:52
【问题描述】:

我有一个列名 date 类型为 timestamp 的表

我正在尝试使用以下查询删除旧行:

delete from my_table where date<(now()-'30 days'::interval)

但所有行都被删除了。

例如,假设我有一个有 2 行的表:

date
2020-02-07 13:53:12.000
2020-02-09 09:30:12.000

我希望查询将删除第一行 (now=02 sep 2020 - 30 days = 02 aug 2020) 但所有行都被删除了

如何修复查询以删除我想要的行?

【问题讨论】:

  • 你期待什么?这两行都在 2 月,显然早于 2020 年 8 月 2 日(顺便说一句:'2020-09-02' - interval '30 days' 产生 8 月 3 日,而不是 2 日)

标签: sql postgresql date where-clause


【解决方案1】:

标准格式为YYYY-MM-DD HH24:MI:SS:MS。这两个日期都在二月,所以它们比八月的第二个早。您可能打算检查 2020-09-02 09:30:12.000 等。您可以在 official documentation 中找到更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 2019-03-09
    • 2021-09-16
    • 2020-10-21
    • 2013-08-08
    • 2011-04-21
    • 2020-01-03
    相关资源
    最近更新 更多