根据交易表跟踪总销售额很容易编写。当前代码使用BETWEEN
并为每个日期执行查询。我真的不喜欢这个,特别是当日期范围是几个月时。
现在,交易的date_created
字段属于timestamp
类型。并编写一个类似于作品的查询,除了一件事:
SELECT DATE(date_created), sum(sale_total)
FROM
transaction
WHERE DATE(date_created) BETWEEN ? and ?
GROUP BY DATE(date_created)
除了数据库已本地化为GMT之外,它工作得很漂亮,我在CST。因此,所有在晚上7:00之后发生的交易CST都会被“推送”到第二天,因为它会在GMT中存储为第二天。
我想我的问题是2倍
GROUP BY
本地化日期?答案 0 :(得分:1)
TIMESTAMP
字段作为UTC存储在引擎盖下。如果您的数据位于TIMESTAMP
字段中,则可以设置要使用的MySQL时区:SET time_zone = 'America/New_York';
如果您已将数据存储在DATETIME
字段中,那么它们将存储在MySQL系统时区中,因此转换将在您身上。