use*_*854 0 php cakephp cakephp-2.3
我正在尝试选择介于2个日期之间的值,因此我将不得不使用<=和> =,但是,我的查询看起来似乎只是小于或大于并且不考虑等于日期的值.
我正在使用CakePHP,以"Ymd h:i:a"格式保存日期.我想在给定的一周间隔(从星期日开始)找到日期,所以我使用了以下内容.
$start_date = date('Y/m/d', strtotime('last Sunday', strtotime($timestamp)));
$formatted_start_date = str_replace("/","-",$start_date);
Run Code Online (Sandbox Code Playgroud)
我试图将$ start_date格式化为"Ymd",但之后它找不到正确的日期,所以我将其切换到它的方式并使用str_replace将其格式化为使用" - "而不是"/".
$date_query = $this->Order->query("select * from orders where id = '$id' and created => '$formatted_start_date' and created <= '$current_timestamp' ");
Run Code Online (Sandbox Code Playgroud)
考虑到我的数据库中的时间值是"Ymd h:i:a"格式,我可以使用"Ymd"进行日期比较吗?是否可以执行涉及LIKE和<=的MySQL查询?
无需做str_replace()- 只需获得Y-m-d:
$start_date = date('Y-m-d', strtotime('last Sunday', strtotime($timestamp)));
Run Code Online (Sandbox Code Playgroud)
然后,使用CakePHP约定(是的,您可以使用Ymd进行日期比较,而不是手动创建查询,即使存储在数据库中的日期时间是Ymd H:i:s)
$this->Order->find('all', array(
'conditions' => array(
'id' => $id,
'created >=' => $start_date,
'created <=' => $end_date . ' 23:59:59',
'my_field LIKE' => '%whatever%'
));
Run Code Online (Sandbox Code Playgroud)
虽然 - 这似乎有点奇怪 - 通常你要么通过'id'或日期范围寻找某种东西 - 而不是两者兼而有之.但是 - 也许你有一个理由:)
正如您在上面所看到的,是的,如果需要,您也可以添加"LIKE".