duangu4980 2014-10-06 15:41
浏览 60
已采纳

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 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";
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!