您的位置:首页 > 其它

[原创]Magento1.4.2 Bug:后台Grid用时间筛选同一天记录,会漏掉当天11点以后的记录。

2011-07-18 11:31 375 查看
偶尔在Magento v1.4.2下发现了一个bug,在后台的gird中,用时间筛选数据时,比如:筛选 01月01号-02号的是500条记录,筛选01号-01号的是270条,再筛选02号-02号的只有200条,那剩余的30条到哪里去了呢?经过检查,原来每个筛选记录的终止时间,只能定位当天的11点,这算是一个Bug吧,要解决这问题可以修改一下一行代码即可:

Mage_Adminhtml_Block_Widget_Grid_Column_Filter_Datetime 类中的首行,将

const END_OF_DAY_IN_SECONDS = 86399;
改为

const END_OF_DAY_IN_SECONDS = 86400;


即可,没错,就是相差一秒,设计者有点考虑的偏差,具体是因为时间转换为 sql 条件的时候,时间格式有误,正确的格式为 2011-07-01 23:59:59,但实际格式为 2011-07-01 23-59-59,导致了无法进行分钟的匹配。

具体的代码追踪不做详细介绍,有兴趣的朋友可以追踪以下代码:

Mage_Adminhtml_Block_Widget_Grid 类的 _prepareCollection 方法, 在末端打印
echo (string)  $this->getCollection()->getSelect();


即可看到实际的sql语句。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐