【问题标题】:Getting error ERROR: date/time field value out of range: "31 APR 2001 in Postgres出现错误 ERROR: date/time field value out of range: "31 APR 2001 in Postgres
【发布时间】:2011-09-04 16:03:21
【问题描述】:

我有一个 varchar 字段,其中日期存储在数据库中,我需要来自 31 APR 2001 等值的数据我运行以下查询

select date(trim(contact_date)) from clients where date(trim(contact_date)) < '2002-03-12';

每当它到达 2001 年 4 月 31 日时,我都会收到错误 ERROR: date/time field value out of range: "31 APR 2001

是否有任何解决方法使我不会收到此错误。由于所有其他日期都可以完美返回。

我使用的 postgres 版本是 PostgreSQL 8.1.22

【问题讨论】:

  • 将日期存储在“日期”类型的列中会使这种错误不可能发生。这就是 SQL 引擎支持“日期”类型的列的原因之一。它也更高效——无需在输出时修剪和转换值。

标签: sql postgresql


【解决方案1】:

4月份没有31,防止打到31查询前检查

【讨论】:

    【解决方案2】:

    四月有 30 天。

    【讨论】:

    • 也许更容易修复不正确的日期,并在将来防止此类值进入数据库。或者,如果您的查询是从应用程序发送的,那么您的应用程序可以优雅地处理错误。
    • 谢谢,我想我会在应用程序中处理这个
    • 我不敢相信这正是我需要的答案,我不得不来 stackoverflow 找到它
    • @limasxgoesto0: 看来这个网站现在真的什么都有了。很高兴我们能够提供帮助。
    猜你喜欢
    • 2020-09-05
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多