2011-07-12 36 views
1

我已经导入PostgreSQL数据库,我不断收到此错误:PostgreSQL的类型转换问题

ERROR: operator does not exist: date >= integer LINE 1: ...tut.id_pf AND evidenta_info_statut.data_sch_statut>=2010-07-...^HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.

我的查询看起来是这样的:

SELECT p_fiz.nr_certif, p_fiz.nume, p_fiz.prenume, localizari.id_jud, evidenta_info_statut.data_sch_statut,evidenta_info_statut.statut, rapoarte_anuale.data_depunere,rapoarte_anuale.angajamente, evidenta_asigurari.data_end,lista_statute.descriere, localizari.id_jud, p_fiz.nume, p_fiz.prenume, p_fiz.nr_certif,p_fiz.id_pf,p_fiz.nume,p_fiz.prenume,p_fiz.codificare from p_fiz INNER JOIN localizari USING (id_loc) INNER JOIN evidenta_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 ORDER BY localizari.id_jud ASC, p_fiz.nume ASC, p_fiz.prenume ASC, p_fiz.nr_certif ASC;

据我了解,这是那些> =或>引起恐慌。

任何ideea如何解决这个问题?

P.S.我在Fedora上运行PostgreSQL 8.4。

+1

你有足够的代表知道,你在人们阅读你的问题的怜悯,如果你不把任何努力转化为可读性格式化引号的日期。帮助我们,所以我们可以帮助你。 –

+0

清理你的查询,里面有很多垃圾。许多列被多次选择,查询无法阅读和理解。 –

回答

2

你需要引用你的日期。

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

没有引号,那些实际上是整数数学; 2010 - 7 - 12 = 1991

+0

嘿弗兰克,我添加了引号,但现在我得到一个空的结果集,这是不好的,因为查询在另一台机器上运行良好。 – Psyche

+0

早于8.3的Postgres版本不会在隐式类型转换中抛出错误。你在其他机器上运行8.2或更高版本吗? –

0

'2010-07-12'