我需要SQLite

时间:2016-07-16 12:43:56

标签: sqlite datetime timezone

我的应用使用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偏移量而不仅仅是代表当地时间的第二个日期字段。我想它可以节省几个字节,但这就是它。

1 个答案:

答案 0 :(得分:0)

如果您将now替换为相关的实际时间戳,那么您在答案中显示的方法是合理的。换句话说,不要假设当前偏移量是所有时间戳的正确偏移量。

请注意,这只会为您提供当前机器的时区偏移量。由于SQLite经常在应用程序中运行,这可能没问题。但如果出于某种原因,你的数据来自其他地方,那么就没有什么神奇可以回想起数据源自哪个时区。