Я пишу скрипт php для вставки данных в базу данных Oracle и получаю ORA-01861: литерал не соответствует строке формата, когда я пытаюсь его запустить. Это как-то связано с датой и тем, как она рассчитывается, но я не уверен, как / где это исправить. В таблице log_date — это тип 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);
Формат даты по умолчанию для оракулов не ГГГГ-ММ-ДД. К счастью, 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";
Других решений пока нет …