extract(month from the_date)の代わりに使用してくださいto_char。Pgドキュメントの日時関数を参照してください。
ケースやローカリゼーションなど、さまざまな問題に悩まされることto_charになります。
effective_dateのデータ型がtimestampまたはであると仮定すると、次のdateように記述します。
$query = "select *
from ". $this->getTable() ."
where pay_stub_entry_name_id = 43
AND extract(month from effective_date) = 7
AND deleted = 0";
その場合integerは、エポック日付であると仮定して、を使用してタイムスタンプに変換しto_timestamp、それを使用する必要extractがあります。epoch上記にリンクされているドキュメントのセクションを参照してください。例:
$query = "select *
from ". $this->getTable() ."
where pay_stub_entry_name_id = 43
AND extract(month from to_timestamp(effective_date)) = 7
AND deleted = 0";
問題の直接の原因はto_char(integer,text)、整数のエポック日付で呼び出していたことです。do日付フォーマットのtimestampバージョンのみ。他の人にとっては特別なことではないので、リテラル文字列として出力されただけです。比較:to_charMonMon
regress=# SELECT to_char(current_timestamp, 'Mon');
to_char
---------
Aug
(1 row)
regress=# select to_char( extract(epoch from current_timestamp), 'Mon');
to_char
---------
Mon
(1 row)
SQLインジェクションを回避するために、これらのクエリの実際のバージョンをパラメータ化することを忘れないでください。