1
0

More than 3 years have passed since last update.

PHPのoci_bind_by_name()で日付型項目が更新できない

Posted at

こんなエラーがでた

Warning: oci_execute() [function.oci-execute]: ORA-01861: リテラルが書式文字列と一致しません in ~~~
INSERTでもUPDATEでも全く同じ。

その時のコードは以下(抜粋)

PHP
oci_bind_by_name($stid, ":DATE_COLUM", $value, -1, SQLT_CHR);
SQL
INSERT INTO SCHEMA.TABLE(
  DATE_COLUM
)
VALUES(
  :DATE_COLUM
)

PHP.net - oci_bind_by_nameを、穴が空くほど見たが

日付型項目のtypeの指定はどうするかがわからず。

おそらくSQLT_CHRなんだが

SQL
VALUES(
  TO_DATE(:DATE_COLUM)
)

↑コレもだめ

SQL
VALUES(
  TO_DATE(:DATE_COLUM, 'YYYY-MM-DD hh24:mi:ss')
)

↑コレもだめ

結局これで動いた

PHP側は問題なかったので前述のとおり。
SQL側を以下のように変更したら動いた。

SQL
VALUES(
  TO_TIMESTAMP(:DATE_COLUM)
)

参考

ORACLE逆引きノート - [ORAエラー] ORA-01861: リテラルが書式文字列と一致しません

追記(というか反省)

もっと一生懸命エラーメッセージでググれってことですね。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0