sql — php ORA-01861: литерал не соответствует строке формата

Я пишу скрипт 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);

0

Решение

Формат даты по умолчанию для оракулов не ГГГГ-ММ-ДД. К счастью, 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";
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]