Reputation: 23
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 . "\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);
Upvotes: 2
Views: 2459
Reputation: 1270793
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";
Upvotes: 1