0

根据交易表按天跟踪总销售额非常容易编写。当前代码使用 a并为每个 dateBETWEEN执行查询。我真的不喜欢这样,尤其是当日期范围以月为单位时。

现在,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因此,在CST晚上 7:00 之后发生的任何交易都将被“推送”到第二天,因为它在GMT中存储为第二天。

我想我的问题是 2-fold

  • 我将如何进行GROUP BY本地化日期?
  • 在 MySQL 中是否有严格的方法知道我想在查询中使用不同的时区?还是必须手动调整?
4

1 回答 1

1

TIMESTAMP字段在引擎盖下存储为 UTC。如果您的数据在TIMESTAMP字段中,您可以设置 MySQL 时区以使用:SET time_zone = 'America/New_York';

如果您将数据存储在DATETIME字段中,它们将存储在 MySQL 系统时区中,因此您需要进行转换。

于 2013-10-18T15:26:36.523 回答