我在MySQL中存储来自不同时区的带时间戳的数据,需要满足两个要求:
换句话说,我希望在MySQL数据类型中拥有org.joda.time.DateTime。
从短暂的思考中,我看到了几个选项,每个选项都有权衡:
TIMESTAMP
或DATETIME
数据类型。这是最简单的,但MySQL在这里的处理是如此破碎,我甚至没有考虑到这一点。utcMillis BIGINT
。这很简单,但不能满足在原始时区显示的要求。timestamp VARCHAR(255)
中的ISO 8601字符串。这很简单,但不能满足自然排序要求。utcMillis BIGINT, tzOffset BIGINT
列中,并在utcMillis
上对其进行索引。这并不常用,因为时区偏移在夏令时有效的时区中变化。 utcMillis BIGINT, timeZoneId VARCHAR(255)
列中,并在utcMillis
上对其进行索引。这有效,但代价是复杂性和存储大小。在MySQL中有更好的方法吗?或者 - 那里的任何数据存储都能做到这一点吗?