【问题标题】:Magento order created_at wrong dateMagento 订单 created_at 错误的日期
【发布时间】:2012-10-10 04:57:16
【问题描述】:

我正在尝试从特定用户输入的日期获取 magento 中的所有订单。

$orders = Mage::getModel('sales/order')->getCollection()->addAttributeToFilter('created_at', array('from' => $userdate));

但它没有提取正确的订单。如果我使用今天的日期,它会从昨天拉一半,从今天拉一半。

经过一番谷歌搜索,Magento 中似乎存储了两个日期

$order->getCreatedAt()

似乎给出了 UTC/GMT 时间

$order->getCreatedAtStoreDate()

给出的时间与我在前端看到的时间相同(即我的本地时区)。

如果我的发现是正确的,那么如何使用 CreatedAtStoreDate 添加AttributeToFilter。我试过了

('created_at_store_date', array('from' => $userdate)

【问题讨论】:

    标签: magento date orders


    【解决方案1】:
    <?php
    
    ini_set('display_errors',true);
    include 'app/Mage.php';
    Mage::getIsDeveloperMode(true);
    Mage::app();
    
    $formatStr = 'Y-m-d H:i:s';
    $startStr  = 'Yesterday 12:00:00AM';
    $endStr    = 'Yesterday 11:59:59PM';
    
    $date   = Mage::getSingleton('core/date');
    /* @var $date Mage_Core_Model_Date */
    
    $collection = Mage::getResourceModel('sales/order_collection');
    
    $collection->getSelect()
                ->where(
                    sprintf("created_at BETWEEN '%s' AND '%s'",
                        $date->gmtDate($formatStr,$startStr),
                        $date->gmtDate($formatStr,$endStr)
                    )
                );
    
    $collection->load(true);
    

    【讨论】:

    • 是否建议发送查询(虽然不完全)而不是使用 ORM?只是好奇。
    • +1 my from, to range on addAttributeToFilter 没有获取正确数量的订单,这解决了问题。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    相关资源
    最近更新 更多