【问题标题】:PostgreSQL type casting issuePostgreSQL 类型转换问题
【发布时间】:2011-07-12 16:51:24
【问题描述】:

我导入了一个 PostgreSQL 数据库,但我不断收到此错误:

错误:运算符不存在:日期 >= 整数第 1 行:...tut.id_pf AND 明显信息_statut.data_sch_statut>=2010-07-... ^ 提示:否 运算符匹配给定的名称和参数类型。你可能需要 添加显式类型转换。

我的查询如下所示:

选择 p_fiz.nr_certif、p_fiz.nume、p_fiz.prenume、localizari.id_jud、explicita_info_statut.data_sch_statut、evidenta_info_statut.statut、rapoarte_anuale.data_depunere、rapoarte_anuale.angajamente、explicita_asigurari.data_end、lista_statute.descriere、localizari.id nume, p_fiz.prenume, p_fiz.nr_certif,p_fiz.id_pf,p_fiz.nume,p_fiz.prenume,p_fiz.codificare 来自 p_fiz INNER JOIN localizari USING (id_loc) INNER JOIN evidencea_contacte USING (id_contact) LEFT JOIN lista_statute USING (id_statut_existenta) LEFT JOIN evidenta_info_statut ON p_fiz.id_pf = evidenta_info_statut.id_pf AND evidenta_info_statut.data_sch_statut> = 2010-07-12 LEFT JOIN rapoarte_anuale ON p_fiz.id_pf = rapoarte_anuale.id_pf AND rapoarte_anuale.an> 2010 LEFT JOIN evidenta_asigurari ON p_fiz.id_pf = evidenta_asigurari.id_pf AND evidenta_asigurari .data_start >= 2010-07-12 由 localizari.id_jud ASC、p_fiz.nume ASC、p_fiz.prenume ASC、p_fiz.nr_certif ASC 订购;

据我了解,是那些 >= 或 > 导致错误。

任何想法如何解决这个问题?

附:我在 Fedora 上运行 PostgreSQL 8.4。

【问题讨论】:

  • 你有足够的代表知道,如果你不努力格式化以提高可读性,你就会受到阅读你问题的人的摆布。帮助我们,我们才能帮助您。
  • 清理你的查询,里面有很多垃圾。许多列被多次选择,查询无法阅读和理解。

标签: postgresql casting types


【解决方案1】:

您需要引用您的日期。

evidenta_info_statut.data_sch_statut >= '2010-07-12'
evidenta_asigurari.data_start >= '2010-07-12'

没有引号,它们实际上被评估为整数数学; 2010 - 7 - 12 = 1991

【讨论】:

  • 嘿弗兰克,我添加了引号,但现在我得到了一个空的结果集,这是不行的,因为查询在另一台机器上运行良好。
  • 早于 8.3 的 Postgres 版本不会在隐式类型转换上抛出错误。您是否在另一台机器上运行 8.2 或更早版本?
【解决方案2】:

日期用引号括起来

'2010-07-12'

【讨论】:

    猜你喜欢
    • 2015-10-14
    • 2011-11-17
    • 2012-10-01
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多