时间戳相减的几种方法

简介: 这两天正在写一个日报的code,其中有一处是涉及系统用时,简单来看,就是俩时间戳字段相减,方法可能有很多,这里列出一些,朋友们要是有更简单、更好玩的方法,可以回复,一起玩耍。

这两天正在写一个日报的code,其中有一处是涉及系统用时,简单来看,就是俩时间戳字段相减,方法可能有很多,这里列出一些,朋友们要是有更简单、更好玩的方法,可以回复,一起玩耍。


创建测试表,t1和t2是TIMESTAMP类型,t1比t2快1分钟,



直接使用t1-t2得到正值,t2-t1得到负值,



使用substr截取字段前18位,得到的是“yyyy-mm-dd hh24:mi:ss“格式的日期,两个日期字段相减则可以得到粒度为秒的结果值,乘以1440(24*60)*60,换算为秒,乘以1000,换算为毫秒,相减值为60000毫秒,



使用substr截取20位开始的6位,得到TIMESTAMP的6位,相减(001811-000000),



另一种方法,可以使用extract函数,得到DAY、HOUR、MINUTE、SECOND各个部分,


按照DAY、HOUR、MINUTE、SECOND各自换算为毫秒,相加得到总的毫秒,相减得到用时,单位是毫秒,这有两种用法,一种是首先换算t1和t2的值为毫秒,再相减这两个值,另一种是直接从t1-t2执行extract函数,换算为毫秒,等价的两种方法,


这种用法的优点在于,相比上面to_date相减,会有毫秒的精度,因为to_date截取了秒这一级别,毫秒被忽略了,因此使用extract函数,可以得到更精确的用时。


总结:

1. 两个时间戳类型的字段,可以相减得到两者用时。若用to_date则会按照格式符,有一定的截断,精度会被忽略。若用extract提取,SECOND包含毫秒,因此毫秒的精度会被保存,得到的结果会更精确些。extract可以接受两个字段相减,作为参数。

2. 实践,才可能准确、理性地知道一些用法细节。


对于上面的需求,如果有朋友有其他更好的办法,欢迎回复,一起学习!



如果您觉得此篇文章对您有帮助,欢迎关注微信公众号:bisal的个人杂货铺,您的支持是对我最大的鼓励!共同学习,共同进步:)

目录
相关文章
|
canal 编解码 人工智能
Google Earth Engine(GEE)——OSM水图层 OpenStreetMap中的全球地表水数据集(90m分辨率)
Google Earth Engine(GEE)——OSM水图层 OpenStreetMap中的全球地表水数据集(90m分辨率)
472 0
|
SQL 数据库
DBeaver执行sql文件
本文介绍了DBeaver这款支持多种数据库的通用数据库管理工具和SQL客户端,它具备查看数据库结构、执行SQL查询和脚本、浏览和导出数据等功能。
4281 1
DBeaver执行sql文件
|
Oracle Java 关系型数据库
Win11 系统Java17的安装教程:最新版JDK 17.07下载、安装、卸载详解
Win11 系统Java17的安装教程:最新版JDK 17.07下载、安装、卸载详解
6099 0
|
编解码 数据可视化 前端开发
可视化大屏适配scale方案
本文介绍了一种使用CSS实现可视化大屏适配的方案。通过设置容器的`transform: scale()`属性,根据屏幕大小动态调整大屏内容的缩放比例,从而实现不同分辨率下的适配。文章提供了详细的实现方法,包括Vue组件的模板、逻辑和样式代码,并展示了实际效果的对比图。此外,还推荐了一个npm包`autofit.js`,用于简化大屏适配的实现。
921 1
可视化大屏适配scale方案
|
关系型数据库 MySQL Unix
MySQL 计算时间差分钟
【5月更文挑战第3天】
1893 2
echarts中使用散点scatter更改颜色却不生效的问题
本文讨论了在ECharts中使用散点图(scatter)时更改颜色不生效的问题。原因是项目中使用了`visualMap`组件,它具有最高的优先级,导致自定义的颜色设置被覆盖。解决方法是在`visualMap`组件中增加`seriesIndex`属性,指定它只对特定的系列(series)生效,从而避免影响散点图的颜色设置。文章提供了详细的代码示例和解决办法。
583 3
|
JavaScript 前端开发 安全
JS 混淆解析:JS 压缩混淆原理、OB 混淆特性、OB 混淆JS、混淆突破实战
JS 混淆解析:JS 压缩混淆原理、OB 混淆特性、OB 混淆JS、混淆突破实战
1998 2
|
前端开发 JavaScript 容器
文字溢出隐藏及鼠标悬停显示效果
文字溢出隐藏及鼠标悬停显示效果
695 0
|
Docker 容器
docker 常用指令(启动,关闭,查看运行状态)
docker 常用指令(启动,关闭,查看运行状态)
628 1
|
SQL 关系型数据库 数据库
Python中SQLite数据库操作详解:利用sqlite3模块
【4月更文挑战第13天】在Python编程中,SQLite数据库是一个轻量级的关系型数据库管理系统,它包含在一个单一的文件内,不需要一个单独的服务器进程或操作系统级别的配置。由于其简单易用和高效性,SQLite经常作为应用程序的本地数据库解决方案。Python的内置sqlite3模块提供了与SQLite数据库交互的接口,使得在Python中操作SQLite数据库变得非常容易。
2004 5