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_char
Mon
Mon
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インジェクションを回避するために、これらのクエリの実際のバージョンをパラメータ化することを忘れないでください。