postgreSQL, mySQLで文字列連結とその文字をdate型にキャストする
APIの作成をしていて、
DBから値を取得するときのWHERE句に日付を利用しようとし
渡されるパラメータ
$date = '2014-12-22'
でもDBのカラムは日付を下記のようにバラバラで持っている
CREATE TABLE schema.working_day
(
factory_working_day_id integer NOT NULL, -- 稼働日ID
year smallint NOT NULL, -- 年
month smallint NOT NULL, -- 月
day smallint NOT NULL, -- 日
…
)
なので、単純なSQLで比較はできない。
結果はWHERE句をこうしました。(PHPです)
"to_date(year || '-' || month || '-' || day, 'YYYY-MM-DD') < to_date('{$date}', 'YYYY-MM-DD')"
year || '-' || month || '-' || day, で文字列を連結して取得する。
to_date()で、date型にキャストする
これで解決できました。