日期时间字符串到毫秒数

时间:2014-05-05 17:54:37

标签: datetime sqlite

我从websource中提取数据,并以“YYYY-MM-DDTHH:MM:SS.SSSZ”格式返回时间。由于我会在这个专栏上进行大量的比较,我认为最好将它们存储为自纪元以来的毫秒数(我需要毫秒精度!!)。将传入的日期时间字符串转换为毫秒数的最佳方法是什么?

我尝试使用

strftime('%s', datetimeString) - 返回自epoch到datetimeString

以来的秒数

strftime('%f', datetimeString) - 只返回SS.SSS部分!!

1 个答案:

答案 0 :(得分:2)

我猜它与SQLite not having actual Date or Datetime types有关(1.2节)。相反,它将它们格式化为:

  • ISO8601字符串(TEXT类型)
  • 浮点天数(REAL类型)
  • 自纪元时间(INTEGER类型)
  • 以来的整数秒数

REAL数据类型可能没有足够的精度来在单个字段中存储日期,时间和小数秒。

似乎答案是:

  • 将它们存储为两个单独的字段,日期时间为一,
  • 中的小数秒
  • 自己进行整数毫秒计算,并将整数结果存储在一个列中,只要您需要的小数秒精度的最大级别适合8字节或更少的有符号整数(最大大小为SQLite3中的INTEGER类型)
  • switch databases to a DBMS that supports real date/datetime types

如果不切换数据库,如果你从不需要亚毫秒精度,那么我至少会尝试“手动计算+单整数列”解决方案,看看它是否有效。