2016-07-15 44 views

回答

1

这取决于日期格式。

INTEGER数字精确到秒。

TEXT值精确到毫秒。您可以在分数秒字段中指定更多数字,但内置函数将在前三位后忽略所有数字。

朱利安日数的分辨率比毫秒更好,但格式化它们时,内置函数不会输出三位以上的小数位数。

1

https://www.sqlite.org/datatype3.html#section_2_2

SQLite没有存储类,用于存储日期 和/或时间预留。取而代之的是,内置的SQLite 的日期和时间函数能够存储日期和时间为TEXT,REAL或INTEGER 值:

TEXT为ISO8601字符串(“YYYY-MM-DD HH:MM:SS .SSS“)。

REAL as Julian天数,自格林威治11月中午以来的天数 24,4714 B.C.根据预测的公历。

INTEGER as Unix时间,自1970-01-01 00:00:00 UTC以来的秒数。 应用程序可以选择以这些 格式中的任意一种格式存储日期和时间,并使用内置日期和 时间函数在格式间自由转换。

看来你可以用ISO8601字符串达到最高分辨率。这些字符串的准确性应该没有问题,只要您不混合存储表示。

+0

有趣的是,你知道关于使用朱利安天数的任何事吗?我想他们应该是同样的决议。这就是我正在使用的。谢谢! –

+0

如果你想要毫秒分辨率,你当然不应该使用Julian天数,因为REAL是浮点数。查看“浮点精度”和[相关错误](http://floating-point-gui.de/)来查看我的意思。 – Caius