我的应用使用UTC的SQLite时间戳。很长一段时间这很好。
但现在我需要知道创建特定记录的时区。
我很高兴继续存储UTC,但我需要使用原始区域向用户显示数据。
如果SQLite支持带时区(+/- HHMM)的时间戳,这很容易实现。如果SQLite有能力以“+/- HHMM”格式提取当前时区,也可以轻松完成。
有没有办法从SQLite获取'当前'时区?或者获取包含时区的时间戳?
要明确我喜欢和想要 UTC。这很好,但我也需要原始TZ。如果有必要,我很乐意将它存放在另一个领域。如有必要,也很乐意存储两个日期字段。
EDIT1: 我能想到的最好的是:
select round(24*60*60*(julianday('now','localtime')-julianday('now')));
确实在几秒钟内产生偏移,但是很麻烦且非标准。我喜欢'current_timestamp with timezone'的模拟。
EDIT2: 在这一点上,我不知道为什么我要打扰存储Julian偏移量而不仅仅是代表当地时间的第二个日期字段。我想它可以节省几个字节,但这就是它。
答案 0 :(得分:0)
如果您将now
替换为相关的实际时间戳,那么您在答案中显示的方法是合理的。换句话说,不要假设当前偏移量是所有时间戳的正确偏移量。
请注意,这只会为您提供当前机器的时区偏移量。由于SQLite经常在应用程序中运行,这可能没问题。但如果出于某种原因,你的数据来自其他地方,那么就没有什么神奇可以回想起数据源自哪个时区。