当前位置: 首页 > 知识库问答 >
问题:

oracle将unix纪元时间转换为日期

盖和泰
2023-03-14

上下文是,我们的产品中有一个现有的应用程序,它生成并向现有的oracle过程发送纪元号&反之亦然。它在该过程中使用如下内容

SELECT UTC_TO_DATE (1463533832) FROM DUAL
SELECT date_to_utc(creation_date) FROM mytable

当我尝试这些查询时,它对我也适用于Oracle10g服务器(如果有关系的话,还有Oracle sql Developer4.x)。

在现有的过程中,要求将值保存为日期本身(时间组件与日期无关),但是在新的要求中,我必须将unix EPOCH值转换为日期时间(小时/分钟/秒级别,或者更好地转换为oracle查询中的特定格式,如dd-MMM-yyyy HH:MM:SS)。奇怪的是,我无法在Google上找到关于UTC_TO_DATE和DATE_TO_UTC函数的任何文档。我已经研究过关于stackoverflow的所有不同问题,但大多数问题都是特定于php、java等编程语言的。

归根结底,如何使用Oracle Query中的这些函数(或任何其他函数)将EPOCH转换为该级别的时间?另外,我引用的那些函数可能是自定义的或特定的,因为我没有看到任何文档或引用这一点。

共有1个答案

裴焱
2023-03-14

从毫秒转换到纪元(假设纪元是1970年1月1日):

select to_date('19700101', 'YYYYMMDD') + ( 1 / 24 / 60 / 60 / 1000) * 1322629200000
from dual;

11/30/2011凌晨5:00

要将该日期转换回毫秒:

select (to_date('11/30/2011 05:00:00', 'MM/DD/YYYY HH24:MI:SS') - to_date('19700101', 'YYYYMMDD')) * 24 * 60 * 60 * 1000
from dual;

如果是秒而不是毫秒,只需省略方程式的1000部分:

select to_date('19700101', 'YYYYMMDD') + ( 1 / 24 / 60 / 60 ) * 1322629200
from dual;

select (to_date('11/30/2011 05:00:00', 'MM/DD/YYYY HH24:MI:SS') - to_date('19700101', 'YYYYMMDD')) * 24 * 60 * 60
from dual;
 类似资料:
  • 我试图编写一个SQL表达式,该表达式将在特定时区将unix历元(1970/1/1以来的秒)转换为本地时间,并从中提取小时值。在研究了这段时间的解决方案后,我仍然不确定如何处理时区。注意,我尽量避免使用NEW_TIME()函数,因为它只使用时区缩略词的有限子集,而不使用全时区名称。 结果是 结果有几个问题 第1列:从时间戳开始,该值比使用日期关闭1小时 第2列:在America/los_Angele

  • 问题内容: 我已经多次看到这个问题,似乎没有答案是我需要的。 我有一个长类型变量,其中存储了一个纪元时间。 我想做的就是将其转换为字符串 例如,如果存储的纪元时间是今天,那么最后的字符串将显示为: 2012年3月17日 我将如何处理? 问题答案: 看看SimpleDateFormat

  • 问题内容: 我目前在使用Python时遇到问题。我有一个Pandas DataFrame,列之一是带有日期的字符串。格式为: “%Y-%m-%d%H:%m:00.000”。例如:“ 2011-04-24 01:30:00.000” 我需要将整列转换为整数。我尝试运行此代码,但是它非常慢,并且有几百万行。 你们知道如何将整个列转换为纪元时间吗? 提前致谢 ! 问题答案: 将字符串转换为using ,

  • 如何在Spring boot2中用MongoDB将日期转换为纪元(unix时间戳)?

  • 问题内容: 我有包含Java应用程序中的Unix时间戳的Excel文档。我想看看它们翻译成什么,并在Excel中将其表示为人类可读的日期。 例如,以下long: 1362161251894的 求值 结果 应类似于: 2013年3月1日11:07:31,894 我假设可以为此创建一个公式,但不确定如何。谢谢! 问题答案: 是的,您可以创建一个公式来为您执行此操作。Java和Unix / Linux计