duangu4980
2014-10-06 15:41 阅读 39

php ORA-01861:literal与格式字符串不匹配

I'm writing a php script to insert data into an Oracle database, and I'm getting ORA-01861: literal does not match format string when I try to run it. It has something to do with the date and they way it's calculated, but I'm not sure how/where to fix it. In the table, the log_date is type date. Below is the section of code that I'm working with for the date after I've already established the db connection. Does it need to go in my $query definition?

$ticks = $mnemonic->timestamp . "
";
$seconds = ($ticks - 621355968000000000) / 10000000;
$day = date("Y-m-d H:i:s", $seconds);

$query = "INSERT into TLM_Item(log_date) Values('$day')";

$updt = ociparse($conn, $query);
    if(!$updt){
    print "No query 
";
    exit;
    }

    $r = ociexecute($updt , OCI_COMMIT_ON_SUCCESS);
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    dongtingrun4973 dongtingrun4973 2014-10-06 16:07

    Oracles default date format is not YYYY-MM-DD. Fortunately, though, Oracle supports the keyword DATE so support dates. I haven't used it in this context, but it should work:

    $query = "INSERT into TLM_Item(log_date) Values (DATE '$day')";
    

    Alternatively, you could use the built-in function to_date():

    $query = "INSERT into TLM_Item(log_date) SELECT to_date('$day', 'YYYY-MM-DD HH24:MI:SS') FROM DUAL";
    
    点赞 评论 复制链接分享

相关推荐