SQLite中两个时间戳之间的差异具有高精度

时间:2016-04-18 12:00:51

标签: sqlite

我需要在SQLite中区分两个时间戳。 在搜索时,我发现Here's a bootply to show code in action,虽然接受的答案似乎乍一看似乎有效,但它失去了很多精确度:

接受此查询

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 个答案:

答案 0 :(得分:1)

作为documented,由内置日期/时间函数解释的格式为:

  

YYYY-MM-DD HH:MM:SS.SSS

换句话说,它们只解析小数秒的前三位数。

您可以尝试使用substr()提取其他数字,并将其添加到具有正确比例的结果中。