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

时间:2014-10-06 15:41:41

标签: php sql oracle

我正在编写一个php脚本来将数据插入到Oracle数据库中,并且我得到了ORA-01861:当我尝试运行它时,literal与格式字符串不匹配。它与日期及其计算方式有关,但我不确定如何/在何处修复它。在表中,log_date是类型日期。下面是我在已经建立数据库连接之后的日期所使用的代码部分。是否需要进入我的$ query定义?

$ticks = $mnemonic->timestamp . "\n";
$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 \n";
    exit;
    }

    $r = ociexecute($updt , OCI_COMMIT_ON_SUCCESS);

1 个答案:

答案 0 :(得分:0)

Oracles默认日期格式不是YYYY-MM-DD。幸运的是,Oracle支持关键字DATE,因此支持日期。我还没有在这种情况下使用它,但它应该有效:

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

或者,您可以使用内置函数to_date()

$query = "INSERT into TLM_Item(log_date) SELECT to_date('$day', 'YYYY-MM-DD HH24:MI:SS') FROM DUAL";