如何在上个月的产品,本月产品,上周产品和本周产品等两个日期之间获得所有产品。
我试过这个:
// 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));
}
但我无法得到结果:(任何帮助?
Daniel回复后修改了
答案 0 :(得分:17)
1)首先,您需要将日期格式从'YYYY-MM-DD'更改为'Y-m-d'。这将返回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,
));
答案 1 :(得分:10)
我尝试了您的代码,不得不交换'lteq'
和'gteq'
才能使其正常运行。 $fromdate
是较低的数字,因此您搜索的日期大于该数字。
此外,你必须记住格式化日期,因为MySQL喜欢它; date('Y-m-d')
。
<子> PS。有关完整列表,请参阅comparison operators
答案 2 :(得分:1)
您的代码存在一个问题:
$collection->addFieldToFilter()
应该是:
$collection->addAttributeToFilter()
答案 3 :(得分:1)
我知道这个问题有点旧,但由于它在搜索引擎结果中排名很好,我会更正 date()函数,更好地将其作为参数: Ymd H:我:。 我希望它会有所帮助!