MySQL用CakePHP查询日期

时间:2013-05-12 05:15:26

标签: php cakephp cakephp-2.3

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

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

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

我试图将$ 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' "); 

考虑到我的数据库中的时间值是“Y-m-d h:i:a”格式,我可以使用“Y-m-d”进行日期比较吗?是否可以执行涉及LIKE和&lt; =?

的MySQL查询

4 个答案:

答案 0 :(得分:9)

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

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

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

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

虽然 - 这看起来有点奇怪 - 通常你要么通过'id'或日期范围寻找东西 - 而不是两者兼而有之。但是 - 也许你有理由:)

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

答案 1 :(得分:0)

上面的回答是完全正确的,但你可以使用cakePHP time helper更简单的方法,它有函数daysAsSql,它可以将时间可读的字符串转录到数据库范围内。

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

答案 2 :(得分:0)

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

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

替换&#39; date&#39;和你的约会。
这对我有用。

答案 3 :(得分: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')
        ));