2012-11-09 50 views
10

我知道应该使用这种格式yyyy-mm-dd hh:mm:ss来插入日期时间。如何将带时区的日期时间插入SQLite?

但是,我的数据集有一个时间戳字段,看起来像yyyy-mm-dd hh:mm:ss +/-0X:00,其中X可以采取很多值,并与我的电脑本地时区不同。

将具有此类时区信息的日期时间字段插入SQLite的最佳方式是什么?

+4

我总是插入转换为格林威治标准时间(UTS + 0)的时间,客户端会在从数据库中检索时将其转换为本地时间。这样你就不需要在数据库中存储时区。如果您确实需要存储测量时间的客户端的时区,请将其放入另一列。 – farfareast

+0

简单的方法是将时间存储为varcahar/string,然后在quering上隐藏时间 –

+2

@EmmanuelN - 这是一个可怕的想法 - 它会使日期/时间的工作更加困难;始终将价值存储在可能的最佳类型中。 farfareast有更好的主意;虽然,我可能会说UTC,它没有夏令时(不确定关于格林威治)。 –

回答

8

SQLite的内置日期和时间函数只理解没有时区信息的时间戳字符串。

如果你要处理的时区,你必须要么

  • 转换所有时间戳一个特定的时区(UTC),这样就可以对它们使用SQLite功能,并且可以使用它们进行排序;或
  • 将时区信息留在那里,但是不要在SQL中但在应用程序中进行所有计算和排序。