やりたいこと
PHP上でSQLを利用して日付型カラムと指定した日付で比較を行いたい。
検索フォームで日付を指定し、該当する日付のもので検索を書けるようなシステム。
検索フォームからの日付は$search['regist_date']としてPHP側に渡る。
使用DBはoracle
成功したSQL
$sql = "SELECT * from customer";
$sql .= "where regist_date = TO_DATE('".$search['regist_date']."', 'YYYY/MM/DD')";
必要だったこと
- 検索フォームで指定した日付をTO_DATEで日付型にする。
TO_DATE('日付型文字列', 'フォーマット')
このとき、$search['regist_date']をシングルクォーテーション(’ ’)で囲んでいなかったのが失敗した原因の1つだった。
まとめ
TO_DATEの書式の理解に足りていない部分があった。また、TO_CHAR(TO_DATE(... の書き方と混ざっている部分もあった。単純な日付の比較ではTO_DATEだけで事足りると思われる。
また、日付の比較では=が使えないという話も見られたがそのようなことは(Oracleでは)なさそう。