我有一个java应用程序,它记录事件的时间戳。我遇到的问题是,通常存在大量的数据,并且使用java计算和格式化日期时间对于性能来说太昂贵了。我最终设置了mysql字段以自动使用current_timestamp。这在我的应用程序中获得了巨大的性能提升。
我遇到的一个大问题是,我们有一半的用户拥有托管在别处的mysql服务器,时区设置不同,可能无法更改。
我需要找到一种方法来生成任何一方的时间戳,但如果需要的话,这种方式不会轻易转换为正确的时区。
我之所以考虑使用unix时代,因为在插入数据时不需要任何格式化,它应该不会出现性能问题。
有更好的方法吗?
答案 0 :(得分:0)
引用MySQL manual:
MySQL将TIMESTAMP值从当前时区转换为UTC 存储,并从UTC返回到当前时区进行检索。 (...)[当前]时区可以基于每个连接进行设置 [使用time_zone系统变量]。
我建议坚持使用内置的TIMESTAMP
类型。可以通过发布(例如,对于UTC + 2)SET SESSION time_zone = '+2:00';
来设置当前会话的时区。