2017-06-14 11 views
3

タイムスタンプの列に2017(または他の年)を含むエントリを照会すると、結果は0になります。pg_query like timestamp

w_presse_erscheinungのデータが 「タイムゾーンのないタイムスタンプ」であり、例えば次のようになります。私は、クエリのLIKEの部分に問題があると仮定し2017年6月1日0時00分00秒

...私のクエリは次のようになります

 $result = pg_query(" 
     SELECT 
     name, 
     w_presse_link, 
     w_presse_erscheinung, 
     w_presse_quelle, 
     description 

     FROM adempiere.w_presse 
     WHERE isactive ='Y' 
     AND description='PS' AND w_presse_erscheinung LIKE '%2017%' 
     ORDER BY w_presse_erscheinung 
     DESC 
     ") 
+2

'LIKE'は文字列であり、日付やタイムスタンプではありません。 –

答えて

2

代わりの文字列変換に頼って、明示的にタイムスタンプから年を抽出できます。

EXTRACT(YEAR FROM w_presse_erscheinung) = 2017 
+0

それはそうです。ありがとうございました! – user2164882

1

このようなタイムスタンプフィールドのように使用することはできません。 timestampフィールドをvarcharにタイプキャストしてから、likeを使用するか、extract関数を使用してフィールドの年を一致させます。

+1

ように使用するために鋳造することは非常に悪いアドバイスです –