如何从android中的DATE列(BIGINT)中减去时区?

时间:2013-07-14 17:32:14

标签: android sqlite

我有一个带有BIGINT列(DT)的表(MYTABLE),用于存储时间戳。我发现这些还包含我的用户的本地时区。 我希望在下次数据库升级时从这些值中删除时区,以便这些时间戳为UNIX纪元。

我应该考虑哪些SQL查询(对于GMT + 3查询示例)?

UPDATE `MYTABLE` SET `DT` = `DT` - (3 * 3600000)

这样可以吗?

我还需要为毫秒等于零的日期值运行此UPDATE。我应该将DT转换为子字符串并查找最后3个字符为零吗?什么是正确的方法?

2 个答案:

答案 0 :(得分:0)

如果您的数据类型是BIGINT,那么我必须假设您已将日期值存储为纪元时间。假设您从java.util.Date' getTime()方法或System.currentTimeInMillis()获得了该值,您的数据库似乎不会包含java.util.Date和{{的时区信息1}}两者都是时区无关的。

看起来更像是显示问题,您需要确保在正确的时区显示日期值。

Look at version of SimpleDateFormat constructor that accepts Locale as parameter.

答案 1 :(得分:0)

我想出了这个sql语句:

UPDATE `MYTABLE` SET `DT` = `DT` - ? WHERE substr(CAST(`DT` AS TEXT), -3) = '000'

其中?是用Java计算的外部变量,包含以毫秒为单位的时区

请有人确认这是否正常