0

我正在尝试选择介于 2 个日期之间的值,因此我将不得不使用 <= 和 >=,但是,我的查询似乎表现得小于或大于并且不考虑等于日期的值。

我正在使用 CakePHP,它以“Ymd h:i:a”格式保存日期。我想找到给定周间隔的日期(从星期日开始),所以我使用了以下内容。

$start_date = date('Y/m/d', strtotime('last Sunday', strtotime($timestamp)));
$formatted_start_date = str_replace("/","-",$start_date);

我试图找到格式化为“Ymd”的 $start_date,但它找不到正确的日期,所以我将它切换到原来的方式并使用 str_replace 将其格式化为使用“-”而不是“/”。

$date_query = $this->Order->query("select * from orders where id = '$id' and created => '$formatted_start_date' and created <= '$current_timestamp' "); 

考虑到我数据库中的时间值是“Ymd h:i:a”格式,我可以使用“Ymd”进行日期比较吗?是否可以进行同时涉及 LIKE 和 <= 的 MySQL 查询?

4

4 回答 4

9

无需执行str_replace()- 只需获取Y-m-d

$start_date = date('Y-m-d', strtotime('last Sunday', strtotime($timestamp)));

然后,不用手动创建查询,而是使用 CakePHP 约定(是的,即使存储在数据库中的日期时间是 Ymd H:i:s,您也可以使用 Ymd 进行日期比较)

$this->Order->find('all', array(
    'conditions' => array(
        'id' => $id,
        'created >=' => $start_date,
        'created <=' => $end_date . ' 23:59:59',
        'my_field LIKE' => '%whatever%'
));

虽然 - 这似乎有点奇怪 - 通常你要么通过“id”或日期范围寻找东西 - 而不是两者兼而有之。但是 - 也许你有一个理由:)

正如您在上面看到的,是的,如果需要,您也可以添加“LIKE”。

于 2013-05-12T05:40:46.073 回答
0

上面的答案是完全正确的,但是您可以使用具有 daysAsSql 功能的 cakePHP 时间助手采取更简单的方法,它将时间可读的字符串转录到数据库范围内。

http://book.cakephp.org/2.0/en/core-libraries/helpers/time.html#TimeHelper::daysAsSql

于 2013-05-13T10:01:08.610 回答
0

只需像这样添加条件的数组。

$resl = $this->DBNAME->find('all',array(conditions=>array('date1>date','date1<date')));

将“日期”替换为您的日期。
这对我有用。

于 2015-01-30T04:59:04.287 回答
0

在你的控制器中试试这个

$searchTutorQuery = $this->Tutordetails->find('all', array(
                'conditions' => array(
                    "User.zip" => $zipcode1,
                    "Tutordetails.user_id"=>$uid,
                    "Tutordetails.subject_id" => $subjectName,
                    "Tutordetails.hourly_rate >=" => $hourly_rate 


                ),
            //"User.id =" => $userid,
            'fields' => array('user_id', 'Tutordetails.subject_id', 'Tutordetails.hourly_rate',
                'User.zip', 'Tutordetails.zip'),
            'order' => array('Tutordetails.id DESC')
        ));
于 2015-07-17T04:38:03.380 回答