| DATE 型カラムへの INSERT/UPDATE で、ORA-01858: 数値を指定する箇所に文字が指定されています となる |
|
以下の原因が考えられます。
- Oracleのエラーが指しているとおり、カラムとSQL文の日付フォーマットが異なっている
|
|
以下の修正を行い、再度動作を確認してみてください。
- SQL文でDATE型が絡む部分については、TO_DATE関数やTO_CHAR関数を用いる。ちなみに、私はこの方法を使います。
- DATE型が絡むSQL文を使用する前に、Oracleの日付フォーマットを指定してしまう
|
|
前者の例です。
●PHPスクリプト
<?php
INSERT INTO xxxxx_tbl VALUES(TO_CHAR('19991118', 'YYYYMMDD'), ...)
?>
後者の例です。
●PHPスクリプト
<?php
$conn = OCILogon( "scott", "tiger", "orcl");
$sql = "ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS' ";
$sql = OCIParse($conn, $sql);
OCIExecute($sql, OCI_DEFAULT );
OCIFreeStatement($sql);
$sql = "SELECT SYSDATE DT FROM dual ";
$sql = OCIParse($conn, $sql);
OCIExecute($sql, OCI_DEFAULT );
while (OCIFetch($sql)) {
echo "SYSDATE=" . OCIResult($sql, "DT");
}
OCIFreeStatement($sql);
OCILogoff($conn);
?>
|
|