日付範囲を検索
指定した日付の範囲を検索しようとして以下のコードを使ったのですが、MySQLで最終日のデータが拾えませんでした。createdのカラムはDATETIME型です。
$date_from = '2009-11-1'; $date_to = '2009-11-30'; $conditions = array('Report.created BETWEEN ? AND ?'=>array($date_from,$date_to)); //'2009.11.30 09:00:00'のデータが拾えない。
DATETIME型のカラムの検索に時刻を省略した日付をしてするとMySQLは時刻を'00:00:00'として評価します。上記の例だと最終日の検索条件が'<= 2009-11-30 00:00:00'になってしまうため、'2009-11-30 09:00:00'のデータは検索条件にかからないという事になります。
解決例A:最終日を時刻まで指定する。
$date_from = '2009-11-1'; $date_to = '2009-11-30'; $date_to .= ' 23:59:59''; $conditions = array('Report.created BETWEEN ? AND ?'=>array($date_from,$date_to));
解決例B:DATE型として扱う。
$date_from = '2009-11-1'; $date_to = '2009-11-30'; $conditions = array('DATE(Report.created) BETWEEN DATE(?) AND DATE(?)'=>array($date_from,$date_to));
検索
最近の投稿
作ったもの
写真共有のTWINGAR
CakePHPのまとめノートCakePHP Note
CakePHPのAPIFramework API
About Me
@ZiSTA Tweets
CakePHPとかMacとか

コメント