首页 > 解决方案 > SQLite 中的时差

问题描述

这是一个令人头疼的问题。
使用表达式:

cast((julianday(arrtime)-julianday(deptime))*24*60 as integer)

计算 和 的差2021-05-01 00:192021-05-01 01:29给我69分钟?
我可以做得更好!
知道如何解决吗?

标签: sqlite

解决方案


你得到的值的问题是julianday()返回一个不完全准确的浮点数,在计算之后和转换为整数之前,结果是69.999999850988.
此值在应用强制转换时将被截断为整数69

一种解决方案是将结果舍入为整数而不是强制转换:

ROUND((julianday(arrtime)-julianday(deptime)) * 24 * 60)

或者,由于您的日期不包含秒,请使用strftime()with'%s'作为格式,它返回自 以来的秒数1970-01-01 00:00:00

(strftime('%s', arrtime) - strftime('%s', deptime)) / 60

查看简化的演示


推荐阅读