Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zend_Db和基于日期的查询_Php_Mysql_Oracle_Zend Framework_Zend Db - Fatal编程技术网

Php Zend_Db和基于日期的查询

Php Zend_Db和基于日期的查询,php,mysql,oracle,zend-framework,zend-db,Php,Mysql,Oracle,Zend Framework,Zend Db,我正在使用Zend_Db查询一个表。我有一些WHERE子句需要是日期,但(乍一看)不清楚如何“以正确的方式”做到这一点。Zend_Db是否提供了一个抽象,这样我就不必担心后端(Oracle、MySQL等)如何预测它的日期了?或者我是否需要按照后端所期望的方式格式化内容 我正在使用基于Oracle的数据库尝试以下操作(PO_DATE是一个时间戳字段) 我得到了以下例外 <b>Message:</b> 1843 ORA-01843: not a valid month S

我正在使用Zend_Db查询一个表。我有一些
WHERE
子句需要是日期,但(乍一看)不清楚如何“以正确的方式”做到这一点。Zend_Db是否提供了一个抽象,这样我就不必担心后端(Oracle、MySQL等)如何预测它的日期了?或者我是否需要按照后端所期望的方式格式化内容

我正在使用基于Oracle的数据库尝试以下操作(PO_DATE是一个时间戳字段)

我得到了以下例外

  <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>
但这将我与Oracle基于日期的表达式联系在一起,这在一定程度上违背了使用SQL抽象层的目的


有没有一种通用的方法可以独立于Zend_Db的后端实现来执行日期查询?

基于我没有看到任何类型的合同这一事实

abstract class Zend_Db_Adapter_Abstract 

这意味着“将日期转换为通用格式”功能,我想我的问题的答案是否定的,但对于一个大型框架,人们永远不会知道,而且它似乎是一种成熟的抽象功能。

我肯定希望有这样的功能,但是,我还没有在Zend框架中找到任何功能。这在他们的跟踪器中也让我很有信心它还不在那里。

许多数据库供应商(包括Oracle)将支持这种格式:

$table = $this->getDbTable();                           
$select = $table->select()->where('1 = ?', 1);          
$select->where('PO_DATE = ?', '02-Dec-2009');

因此,我倾向于这样做,直到他们在Zend_Db中更好地支持日期/字符串转换

感谢您为我节省了一个晚上的时间来搜索一些不存在的东西:)另请看哪一个看起来会实现它
abstract class Zend_Db_Adapter_Abstract 
$table = $this->getDbTable();                           
$select = $table->select()->where('1 = ?', 1);          
$select->where('PO_DATE = ?', '02-Dec-2009');