在更长的时间段和时区存储统计数据

Mat*_*ers 5 mysql database timezone database-design date

目前,我正在开发一个项目,该项目计算数据并将其按ID存储在分析数据库中.

例如,阅读新闻文章的次数(因此有20个类别的数据存储为整数).

我们将数据存储在以下字段中:int user_id int value_type_id int value datetime datetime

我们使用4个表,x_hour,x_day,x_week,x_month这样我们就不必计算潜在的几千甚至几百万条记录的数据.

需要动态计算数据并通过某些连接进行过滤.这一切都没有问题,并且按照预期并以令人满意的速度工作.

接下来的问题.我们希望数据显示在查看它的用户的时区中,时区并不总是相同的,因为它可以是反对的,例如UTC-5或UTC + 4.

由于我们将日期存储在UTC上,因此如果在午夜前一小时存储活动,则较大的间隔会将其视为昨天,即使它可能在该时区的同一天,因此我们在几天,几周和几个月的时间间隔存在问题.

我已经阅读了解决方案,添加24列来保存每个时区的数据,是否有人有不同的解决方案.

Mat*_*ers 1

似乎唯一的方法是使用 15 分钟的存储桶或精确定义的时区,因为这样只能获得大约 40 列。

然后我们必须连续几天、几周和几个月都做同样的事情,这样我们才能获得每个时区的正确数据。

花费更多的时间并占用更多的数据存储,但如果我们保持数据干净,这可能是一个足够好的解决方案。

  • 无意惹事生非,但现代世界的大多数用户*都*受到 DST 的影响。忽略它意味着您向他们提供的数据与他们的期望不符。有时这没问题,但您似乎特别追求“精确”的解决方案。如果您还没有阅读过,请阅读 [timezone tag wiki](http://stackoverflow.com/tags/timezone/info) - 特别是“Time Zone != Offset”。 (2认同)