| 19件目(121件中) |

日付範囲を検索

固定リンク:#0000000105   投稿者:ZiSTA 日時:2009-12-29 16:49:05   コメント( 0

指定した日付の範囲を検索しようとして以下のコードを使ったのですが、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));
 

コメント

| 19件目(121件中) |
↑ ページトップ