oracle - 在 Oracle 中减去 ISO 8601 时间戳
问题描述
我想减去两个 ISO 8601 格式的时间戳(2021-08-24T12:59:35Z - 2021-08-24T12:59:05Z)认为最简单的方法是将此时间戳转换为纪元,然后减去。只是无法获得适合转换的语法。如何将 2021-08-24T12:59:05Z 转换为: 1629809975 ?
解决方案
正如评论所说,很大程度上取决于您希望如何格式化结果。
如果您对 没有INTERVAL
问题,那么最简单的方法是使用TO_UTC_TIMESTAMP_TZ
它实际上将 ISO 8601 格式的字符串作为参数:
SELECT TO_UTC_TIMESTAMP_TZ('2021-08-24T12:59:35Z') - TO_UTC_TIMESTAMP_TZ('2021-08-24T12:59:05Z') AS RESULT
FROM DUAL;
返回此结果:
结果 |
---|
+000000000 00:00:30.000000000 |
否则,如果你想要秒数,你可以合并CAST
并ROUND
得到结果:
SELECT ROUND((CAST(TO_UTC_TIMESTAMP_TZ('2021-08-24T12:59:35Z') AS DATE) - CAST(TO_UTC_TIMESTAMP_TZ('2021-08-24T12:59:05Z') AS DATE)) * 86400) AS RESULT
FROM DUAL;
结果 |
---|
30 |
这是一个显示两个选项的 DBFiddle ( DBFiddle )
推荐阅读
- reactjs - 我可以使用 npm install 代替 yarn add 命令吗?
- c# - .Net Core 3.1 - HTTP 请求 - 分别发送标头和正文
- amazon-web-services - AWS 数据同步与存储网关用例
- android - API 密钥无效。请传递有效的 API 密钥 Firebase
- three.js - 无法弄清楚如何让我的 3d 模型在 Drei 中制作动画
- python - pandas - 数据帧上的 lambda 函数 - 我使用不正确吗?
- python - 用于生成自然语言外观单词的单行器
- eclipse - eclipse tomcat8启动很慢
- javascript - 插入大量数据(Node.js API)
- java - 如何获取存储当前 java 文件的路径?