【问题标题】:MySQL query for dates with CakePHPMySQL 使用 CakePHP 查询日期
【发布时间】:2013-05-12 05:15:25
【问题描述】:

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

我正在使用 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);

我试图找到格式化为“Y-m-d”的 $start_date 但它找不到正确的日期,所以我将其切换为原来的方式并使用 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 和

【问题讨论】:

    标签: php cakephp cakephp-2.3


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 我正在寻找特定用户的日期范围,这就是我需要两者的原因
    • 啊,那么它可能是“Order.user_id”而不是“Order.id”?无论哪种方式,我认为这应该回答你的问题。
    【解决方案2】:

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

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

    【讨论】:

    • 虽然 - 它作为一个实际的 MySQL 字符串返回,这会让你使用 query() 而不是 find() 对吗?如果是这样,则不值得在 imo 上进行权衡。
    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

      在你的控制器中试试这个

      $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')
              ));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-12
        • 2020-08-08
        • 1970-01-01
        • 1970-01-01
        • 2016-03-22
        • 1970-01-01
        • 2011-07-01
        • 2011-04-23
        相关资源
        最近更新 更多