sqlite - SQLite 中的时差
问题描述
这是一个令人头疼的问题。
使用表达式:
cast((julianday(arrtime)-julianday(deptime))*24*60 as integer)
计算 和 的差2021-05-01 00:19
,2021-05-01 01:29
给我69
分钟?
我可以做得更好!
知道如何解决吗?
解决方案
你得到的值的问题是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
查看简化的演示。
推荐阅读
- android - 如何将多种不同的文件类型(pdf、xls、png)从 android 上传到节点服务器
- javascript - 当使用 Javascript 按下提交按钮时,如何创建一个工具提示,显示指向字段的验证错误
- ios - 如何在swift 4中使用NSPredicate过滤字典数组(Datewise)
- laravel - Laravel - 记住我没有按预期工作
- jquery - 为什么 vue.js 与 asp.net MVC?
- excel - 使用 VBA 在 SAP 中停止事务
- javascript - 请求的资源上不存在“Access-Control-Allow-Origin”标头:平均堆栈
- c++ - 交叉引用标头中的错误“未终止的条件指令”
- javascript - 两端都可以理解通过不同语言编写的套接字发送/接收的数据吗?
- cordova - 来自 MobileApplication 的 IBM MobileFirst Platform v8.0 Https 连接