嗨,我想用“本周,本月,今年”从MySql表中搜索数据。
以下是我的控制器代码。
我没有使用Current DATE_SUB(NOW(), INTERVAL 1 WEEK获得任何数据

控制器初始代码:

 $condition = array('Order.eventid' => $id, 'Order.userid !=' => '');
            if (isset($_GET['dr']) && !empty($_GET['dr'])) {

                if ($_GET['dr'] == 2) { // This week
                    $condition['Order.addeddate'] = 'DATE_SUB(NOW(), INTERVAL 1 WEEK)';
                }
                if ($_GET['dr'] == 3) { // This month
                    $condition['Order.addeddate'] = 'DATE_SUB(NOW(), INTERVAL 1 MONTH)';
                }
                if ($_GET['dr'] == 4) { // This year
                    $condition['Order.addeddate'] = 'DATE_SUB(NOW(), INTERVAL 1 YEAR)';
                }
                if ($_GET['dr'] == 5) { //  Custom date range
                    //$condition[] = array('Order.addeddate' => 'DATE_SUB(NOW(), INTERVAL 1 MONTH)');
                }
            }
     if (isset($_GET['ot']) && !empty($_GET['ot'])) {
                if ($_GET['ot'] == 'attending') { //attending
                    $condition['Order.orderstatus'] = '1';
                }
                if ($_GET['ot'] == 'processing') { //online_sales
                    $condition['Order.orderstatus'] = '2';
                }
                if ($_GET['ot'] == 'manual') { //manual
                    $condition['Order.orderstatus'] = '1';
                }
                if ($_GET['ot'] == 'refunded') { //refunded
                    $condition['Order.orderstatus'] = '1';
                }
            }
    $this->paginate = array(
                'conditions' => $condition
            );


php - 如何在CakePHP中的本周,本月,今年进行数据搜索-LMLPHP

最佳答案

您可以使用StartDateEndDate轻松完成此操作。像这样添加条件

'conditions' => array('date(YourModel.addeddate) BETWEEN ? AND ?' => array($sdate,$edate)


现在的问题是如何获得this month this week this year。您可以使用以下代码。

您可以使用cakephp TimeHelper

通过使用cakephp TimeHelper

为了这个星期

$sdate = $this->Time->format('y-m-d','last saturday');
$edate = $this->Time->format('y-m-d',time());


为了这个月

$sdate = $this->Time->format('y-m-01',time());
$edate = $this->Time->format('y-m-d',time());


为了今年

$sdate = $this->Time->format('y-01-01',time());
$edate = $this->Time->format('y-m-d',time());


有关详细信息,TimeHelper Doc

没有TimeHelper

为了这个星期

$sdate = date('y-m-d', strtotime("last saturday"));
$edate = date("y-m-d");


为了这个月

$sdate = date('y-m-01');
$edate = date("y-m-d");


为了今年

$sdate = date('y-01-01');
$edate = date("y-m-d");


现在,如果要获取最近7天或最近30天的数据,可以使用strtotime

最后7天

$sdate = date('Y-m-d', strtotime("-1 weeks"));
$edate = date("y-m-d");


最后30天

$sdate = date('Y-m-d', strtotime("-30 days"));
$edate = date("y-m-d");


获取过去1年

$sdate = date('Y-m-d', strtotime("-1 year"));
$edate = date("y-m-d");


我认为现在您可以轻松解决问题。

关于php - 如何在CakePHP中的本周,本月,今年进行数据搜索,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33207229/

10-09 00:49