目前,我正在开发一个项目,该项目计算数据并将其按ID存储在分析数据库中.
例如,阅读新闻文章的次数(因此有20个类别的数据存储为整数).
我们将数据存储在以下字段中:
int user_id
int value_type_id
int值
日期时间日期时间
我们使用4个表,x_hour,x_day,x_week,x_month
这样,我们就不必计算潜在的数千甚至数百万条记录的数据.
需要动态计算数据并通过某些连接进行过滤.
这一切都没有问题,并且按照预期并以令人满意的速度工作.
接下来的问题.我们希望数据显示在查看它的用户的时区中,时区并不总是相同的,因为它可以是反对的,例如UTC-5或UTC 4.
由于我们将日期存储在UTC上,因此如果在午夜前一小时存储活动,则较大的间隔会将其视为昨天,即使它可能在该时区的同一天,因此我们在几天,几周和几个月的时间间隔存在问题.
最佳答案
继续以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.