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个回答



Oracles默认日期格式不是YYYY-MM-DD。 幸运的是,Oracle支持关键字 DATE </ code>,因此支持日期。 我没有在这个上下文中使用它,但它应该工作:</ p>

  $ query =“INSERT into TLM_Item(log_date)Values(DATE'$ day')”; \  n </ code> </ pre> 

或者,您可以使用内置函数 to_date()</ code>:</ p>

  $ query =“INSERT into TLM_Item(log_date)SELECT to_date('$ day','YYYY-MM-DD HH24:MI:SS')FROM DUAL”; 
</ code> </ pre>
</ DIV>

展开原文

原文

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";

dongtang4019
dongtang4019 。 。 。 在Oracle中打印日期的默认格式是省略时间(如果需要更多详细信息,请使用to_char())。 如果要插入更多列,请使用insert。 。 。 选择。 它可以插入所有内容。 。 。 values()和更多。
接近 6 年之前 回复
dongyou4411
dongyou4411 此外,当我去DB检查条目时,日期显示为:10-JAN-14,没有包含时间。 是什么导致它没有出现?
接近 6 年之前 回复
drlnsli18864734
drlnsli18864734 现在,只是一个后续问题:如果我想在日期之外插入其他值,我是否只使用整个表达式“SELECT to_date('$ day','YYYY-MM-DD HH:MI:DD') FROM DUAL“在一个Values()表达式中以及要插入的其他值?
接近 6 年之前 回复
dourang6423
dourang6423 第一个选项不起作用,但第二个选项没有。 评论:1)错字:在第二个选项中,“HH:MI:DD”应该说“HH:MI:SS”2)如果你输入如上所示,你会得到一个错误“ORA-01849:小时必须介于两者之间 1和12“。 如果您改为输入“HH24:MI:SS”,它将起作用。
接近 6 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐