5

如何获取上个月产品、本月产品、上周产品和本周产品等两个日期之间的所有产品。

我试过这个:

// current day to start with
$start = mktime(0,0,0,date('m'), date('d'), date('Y'));;

// calculate the first day of last month
$first = date('YYYY-MM-DD',mktime(0,0,0,date('m',$start) - 1,1,date('Y',$start)));

// calculate the last day of last month
$last = date('YYYY-MM-DD',mktime(0, 0, 0, date('m') -1 + 1, 0, date('Y',$start)));



   if($filter == "lastmonth"){

    $collection = Mage::getModel('catalog/product')->getCollection();
    $collection->addAttributeToFilter('updated_at', array('gteq' =>$first));
    $collection->addAttributeToFilter('updated_at', array('lteq' => $last));


}

但我无法得到结果:(有什么帮助吗?

大牛回复后修改!

4

4 回答 4

17

1)首先,您需要将日期格式从“YYYY-MM-DD”更改为“Ymd”。这将返回 magento 记录具有的日期格式。

2)日期有一个特殊条件,如下面的例子所示。

$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToFilter('updated_at', array('gteq' =>$first));
$collection->addAttributeToFilter('updated_at', array('lteq' => $last));

至。

$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToFilter('updated_at', array(
        'from' => $first,
        'to' => $last,
        'date' => true,
        ));
于 2013-09-12T13:59:08.997 回答
10

我试过你的代码,不得不交换'lteq''gteq'让它工作。是较小的$fromdate数字,因此您正在搜索大于该数字的日期。

此外,您必须记住按照 MySQL 的喜好格式化日期;date('Y-m-d').

PS。有关完整列表,请参阅比较运算符

于 2012-04-17T12:06:19.270 回答
1

您的代码存在一个问题:

$collection->addFieldToFilter()

应该:

$collection->addAttributeToFilter()
于 2012-04-16T12:46:18.783 回答
1

我知道这个问题有点老了,但由于它在搜索引擎结果中的排名很高,我将更正date()函数,它可以更好地作为参数,例如:Ymd H:i:s。我希望它会有所帮助!

于 2014-03-13T14:38:52.800 回答