1

現在、Zend Framework 2 と日付範囲を指定したクエリを使用して MySQL DB からデータを取得していますが、以前は ZF1 では利用できなかった between 句に遭遇しました。

ただし、次のような私のコードは正しく機能していません。

   $dateStart = '2012-12-20';
   $dateEnd = '2012-12-31';

   $sql = new Sql($_db);
   $select = $sql->select()
                ->from(array("t" => $table))
                ->columns(array("col1" => "col_as_1", "col2" => "col_as_2"));

 $select->where->between("date", $dateStart, $dateEnd);
 $stmt = $sql->prepareStatementForSqlObject($select);
 $result = $stmt->execute()->getResource()->fetchAll(\PDO::FETCH_ASSOC);

どうやら between 句は包括的ではなく、2012-12-30 までしか結果を取得できません。包括的にする方法はありますか? ZF2 ドキュメントを見てきましたが、あまり役に立たず、MySQL クエリ ブラウザで同じクエリを実行すると、必要なすべてのデータが返されます。

4

5 に答える 5

2

だからあなたは試すことができlessThanOrEqualToますgreaterThanOrEqualTo.

Between はこの機能を提供していないようです:between($identifier, $minValue, $maxValue)

クエリをトレースすると$select->__toString()、クエリが文字列として表示されます。

私のコンピューターにはZF2がありませんがbetween、ZF2でdate > '2012-12-20' AND date < '2012-12-31'.

于 2013-01-08T18:11:49.990 に答える
1

日付の後に時間、分、秒がないことを確認してください。これにより、2012-12-31 00:00:01は技術的には>になるため、2012-12-31の日付は選択されません。 2012-12-31

于 2013-01-09T15:52:12.810 に答える
0

形式は同じでなければなりません。mysql DATE 関数を使用してください

$select->where->between("DATE(date)", DATE('.$dateStart.'), DATE('.$dateEnd.'));

于 2014-12-17T12:33:50.637 に答える