sql - 数据类型为 CHAR(23 BYTE) 的 2 个日期之间的 Oracle 差异
问题描述
如何在几分钟内找到以下 2 个日期之间的差异,两种数据类型都是使用 SQL 的 CHAR
2019-10-31 10:23:05.927
2019-10-30 11:20:05.500
解决方案
您可以使用to_date()
将两个字符串都转换为date
s(忽略毫秒部分),然后减去它们。这为您提供了一个数值,该数值将日期之间的差异表示为天数,然后您可以将其转换为小时:
(
to_date(substr(col1, 1, 19), 'yyyy-mm-dd hh24:mi:ss')
- to_date(substr(col2, 1, 19), 'yyyy-mm-dd hh24:mi:ss')
) * 24 * 60
如果您确实想包含毫秒部分,那么它会变得很长。您可以使用 s 将字符串转换为timestamp
s to_timestamp()
,然后减去它们;这会产生一个间隔,您需要从中提取每个部分。
extract(hour from
to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
- to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
) * 60
+ extract(minute from
to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
- to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
)
+ extract(second from
to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
- to_timestamp(col1, 'yyyy-mm-dd hh24:mi:ss.ff3')
) / 60
推荐阅读
- python - 流光地图占据整个背景
- java - Android Studio - 'com.android.internal.application' Java 11 - 修复 Android Studio 中不可见的 gradle 项目
- node.js - 谷歌云平台云功能:临时文件存储?
- node.js - 在服务器上运行 next.js 项目的问题
- jobs - Rundeck 3.4.5 - 稍后运行作业停止工作
- docker - Prometheus 警告 docker swarm 中容器过多
- windows - 使用 wget/curl 使用 windows CMD 行下载文件
- python - 使用 Python 脚本在 Abaqus 中自动生成力-位移曲线
- python - 熊猫显示唯一计数和唯一值?
- javascript - 如何在 Node.js 中编写一个使用 ANSI 编码更新数组的函数