Do You PHP?    
Search Engine Optimization  php5 powerd  Valid XHTML 1.0!  Valid CSS!  このサイトのはてなブックマーク数 



last updated
2002/01/20

counter hits
since 1999/11/06


DATE 型カラムへの INSERT/UPDATE

現象 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);
?>



About This Site |  Privacy Policy |  Contact
Copyright © 1999 - 2002 by Hideyuki SHIMOOKA all rights reserved.