2011-07-12 39 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'