SQLite中两个高精度时间戳之间的差异
Posted
技术标签:
【中文标题】SQLite中两个高精度时间戳之间的差异【英文标题】:Difference between two timestamps in SQLite with high precision 【发布时间】:2016-04-18 12:00:50 【问题描述】:我需要获取 SQLite 中两个时间戳之间的差异。 在搜索时,我找到了this question,虽然乍一看接受的答案似乎有效,但它失去了很多精度:
接受这个查询
select timestamp, EndTimeStamp, ((julianday(EndTimeStamp)-julianday(timestamp)) * 86400.0) as Duration from X
我得到这个结果:
"2016-04-18 13:44:31.630916" "2016-04-18 13:44:31.63114" "0.00100582838058472"
"2016-04-18 13:44:31.6315231" "2016-04-18 13:44:31.6316997" "0.0"
"2016-04-18 13:44:31.6320359" "2016-04-18 13:44:31.632202" "0.0"
"2016-04-18 13:44:31.6326964" "2016-04-18 13:44:31.6329361" "0.0"
如您所见,最后三个结果的计算差异为零,但时间戳实际上不同。
是否可以在 SQL 中使用 DATETIME 字段类型计算精确的差异?我宁愿不需要回退到 C#。
【问题讨论】:
【参考方案1】:作为documented,内置日期/时间函数解释的格式为:
YYYY-MM-DD HH:MM:SS.SSS
换句话说,它们只解析小数秒的前三位。
您可以尝试使用substr()
提取额外的数字,并以正确的比例将它们添加到结果中。
【讨论】:
我刚刚意识到 SQLite 将日期保存为字符串,而不是专用的 DATETIME 类型,所以现在这种行为是有意义的。谢谢。以上是关于SQLite中两个高精度时间戳之间的差异的主要内容,如果未能解决你的问题,请参考以下文章
在 Flutter 中显示两个 Firestore 时间戳值之间的差异