Я использую Zend_Db для запроса таблицы. У меня есть некоторые статьи WHERE
, которые должны быть датами, и не ясно (на первый взгляд), как это сделать «правильно». Предоставляет ли Zend_Db абстракцию, поэтому мне не нужно беспокоиться о том, как бэкэнд (Oracle, MySQL и т. Д.) Ожидает его даты? Или мне нужно форматировать вещи так, как их ожидает бэкэнд.Zend_Db и запросы по дате
Я пытаюсь следующий с базой данных на основе Oracle (PO_DATE это поле временной метки)
$table = $this->getDbTable();
$select = $table->select()->where('1 = ?', 1);
$select->where('PO_DATE = ?', '2009-12-02');
и я получаю следующее исключение
<b>Message:</b> 1843 ORA-01843: not a valid month SELECT "TABLE_NAME".* FROM "SYSTEM"."TABLE_NAME" WHERE (1 = 1) AND (PO_DATE = *'2009-12-02') </p>
Я понимаю, что я мог бы сделать что-то подобное
$date = new Zend_Db_Expr(
"to_date('2009-12-02', 'YYYY-MM-DD')"
);
$select->where('PO_DATE = ?', $date);
но это связывает меня с выражениями, основанными на дате Oracle, которые частично поражает цель использования уровня абстракции SQL.
Есть ли общий способ делать запросы с датой независимо от внутренней реализации с помощью Zend_Db?
спасибо за спасение меня ночь поиска чего-то, чего там нет :) –
См. также http://framework.zend.com/issues/browse/ZF-8538, который выглядит так, как будто он будет реализован –