如何在 Oracle 中获取 epoch 函数
Posted
技术标签:
【中文标题】如何在 Oracle 中获取 epoch 函数【英文标题】:How to get epoch function in Oracle 【发布时间】:2020-03-14 06:46:18 【问题描述】:select *
from sample_table scr
where extract('epoch' from systimestamp - scr.created_date)/60 > :defaultTimeOut
这是一个 postgres 查询。试图将此查询转换为 oracle。
如何在 oracle 中转换 epoch?
TIA。
【问题讨论】:
究竟什么是“纪元”? @WilliamRobertson PostgreSQLEXTRACT
documentation - 对于两次之间的间隔,“纪元”是间隔中的总秒数。如果您只是在谈论单个时间戳,那么纪元时间是自 1970-01-01T00:00:00 UTC 以来的秒数。
【参考方案1】:
您实际上是在尝试将间隔(即两个日期之间的差异)转换为秒数。假设created_date
是date
数据类型,一种方法是:
select *
from sample_table
where (sysdate - created_date) * 24 * 60 * 60 > :defaultTimeOut
基本原理:在 Oracle 中,减去两个日期会返回一个十进制数,表示天数的差异。您可以将其乘以 24(每天的小时数)、60(每小时的分钟数)和 60(每分钟的秒数),将其转换为秒数,然后将其与目标值进行比较。
如果created_date
是timestamp
数据类型,您可以先将其转换为date
:
select *
from sample_table
where (sysdate - cast(created_date as date)) * 24 * 60 * 60 > :defaultTimeOut
【讨论】:
感谢您的回复。它收到类似这样的错误“ORA-01867:间隔无效 01867。00000 -“间隔无效”*原因:您指定的字符串不是有效间隔。*操作:请指定有效间隔。“ @user12333071:这似乎工作正常in this db fiddle。您的数据库中created_date
列的数据类型是什么?
数据类型为时间戳
@user12333071:我用timestamp
s 的解决方案更新了我的答案以上是关于如何在 Oracle 中获取 epoch 函数的主要内容,如果未能解决你的问题,请参考以下文章
如何在 oracle sql 中再次使用 MAX 和 MIN 函数获取值?
在 Python 3.6.9 中以纳秒为单位获取 Epoch 时间戳
提前 30 分钟获取 Android Unix Epoch?
如何使用 java.sql 包中的 rs.getSQLXML() 函数从 Oracle 数据库中获取 XMLType 列?