mysql – 在更长的时间段和时区存储统计信息

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

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

我们将数据存储在以下字段中:
int user_id
int value_type_id
int值
日期时间日期时间

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

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

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

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

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

最佳答案
继续以UTC格式存储日期时间.

将用户的时区传递给查询.

使用CONVERT_TZ函数在SELECT中转换:

CONVERT_TZ(`datetimefield`,'UTC','Europe/Amsterdam')

‘欧洲/阿姆斯特丹’被适当的时区所取代.

只要您拥有此数据,您最好使用上述IANA时区字符串,而不是像“UTC-5”那样的偏移量.它将正确处理发生这种情况的地区的夏令时问题.

附加说明:https://dev.mysql.com/doc/refman/5.5/en/mysql-tzinfo-to-sql.html
– 该程序用于使用时区数据初始化MySQL.

相关文章

在正式开始之前,我们先来看下 MySQL 服务器的配置和版本号信...
> [合辑地址:MySQL全面瓦解](https://www.cnblogs.c...
物理服务机的CPU、内存、存储设备、连接数等资源有限,某个时...
1 回顾 上一节我们详细讲解了如何对数据库进行分区操作,包括...
navicat查看某个表的所有字段的详细信息 navicat设计表只能一...
文章浏览阅读4.3k次。转载请把头部出处链接和尾部二维码一起...