什么是存储日期时间的实用方法,以便我可以让用户查看/查询他们自己本地时间的数据,同时保留有关原始日期时间的信息。
基本上,用户希望能够查询(以他们自己的本地时间为准)从不同时区的系统收集的数据。但有时,他们想知道原始系统中的数据是在 18:00 创建的。当来自世界不同地区的用户就同一事件进行交流时,它会有所帮助。
User1: What? We don't have any data for 20:00
User2: Dude, it says 20:00 right there on my screen.
User1: Wait, what timezone are you? What's the UTC-time?
User2: What is UTC? Is that something with computers?
User1: OMFG! *click*
我正在寻找有关如何存储数据的建议。
我正在考虑将所有日期时间存储在 UTC 中,并添加一个包含原始时区名称的附加列,其形式允许我使用 mysqlCONVERT_TZ
或 Java 中的对应项。然后,应用程序会将用户输入的日期转换为 UTC,我可以轻松地查询数据库。所有日期也可以在应用程序中轻松转换为用户本地时间。使用原始时区列,我还可以显示原始日期时间。
但是,这意味着对于我拥有的每个日期时间,我都需要一个额外的列......
start_time_utc datetime
start_time_tz varchar(64)
end_time_utc datetime
end_time_tz varchar(64)
我在正确的轨道上吗?
使用过此类数据的人会分享他们的经验吗?
(我将使用 MySQL 5.5 CE)
更新 1
数据将以 xml 文件的形式交付,其中每个条目在某个本地时区都有一个日期时间。所以只会有一个插入进程,在一个地方运行。
一旦加载到数据库中,它将在一些 Web 应用程序中呈现给不同时区的用户。对于大多数用例,感兴趣的数据也确实来自与查看数据的用户相同的时区。对于一些更复杂的用例,一系列事件相互关联,跨越多个时区。因此,用户希望能够谈论这些事件,以便在对方的时间调查可能的原因/后果。不是UTC,不是他们自己的当地时间。