【发布时间】:2016-09-15 06:23:16
【问题描述】:
上下文是我们的产品中有一个现有的应用程序,它生成 EPOCH 编号并将其发送到现有的预言机程序,反之亦然。它使用类似这样的方法在该过程中工作
SELECT UTC_TO_DATE (1463533832) FROM DUAL
SELECT date_to_utc(creation_date) FROM mytable
当我尝试这些查询时,它对我也适用于 Oracle 10g 服务器(以及 oracle sql developer 4.x,如果这很重要的话)。
在现有程序中,要求是将值保存为日期本身(时间组件无关紧要),但是在新要求中,我必须将 unix EPOCH 值转换为日期时间(在小时/分钟/秒级别,或更好在 oracle 查询中采用特定格式,例如 dd-MMM-yyyy hh:mm:ss)。奇怪的是,我无法通过 Google 找到有关 UTC_TO_DATE 和 DATE_TO_UTC 函数的任何文档。我已经查看了有关 stackoverflow 的所有不同问题,但其中大多数都是特定于编程语言的,例如 php、java 等。
底线,如何在 Oracle 查询中使用这些函数(或任何其他函数)将 EPOCH 转换为该时间级别?此外,我所指的那些功能可能是自定义的或特定的,因为我没有看到任何文档或对此的参考。
【问题讨论】:
-
这些不是标准函数,它们是您应用程序的一部分。您需要找到它们的来源(在源代码管理中;或者在 user_source 或 all_source 中,如果不存在)。但是你想修改它们,有包含时间的新版本,还是有独立的转换?您还需要检查您传入 /get back 的日期是否也是 UTC 或代表不同的地区 - 您的函数可能正在调整它们。
-
@AlexPoole 感谢您的建议。我确实觉得它们可以是自定义的,但我必须承认,我没有意识到它们可以在我的代码库本身中自定义。所以是的,我在源代码管理中找到了它们的定义,它们的内部工作与 tbone 在下面分享的几乎相同..
-
他们是否将日期更改为不同的时区,或者他们是否假设日期也代表 UTC?鉴于您对 tbone 的回答的评论,您确定他们还没有设置时间组件,而您只是没有看到那些?
-
@AlexPoole 这就是他们所拥有的 - RETURN to_date('01.01.70','dd.mm.rr') + (utc_in/(60*60*24));所以我认为他们实际上并没有更改为当地时间,他们也想将其存储为 UTC.. 我也是.. 是的,一旦我更改了客户端的格式,我可以看到他们自定义的时间功能也很好
标签: oracle datetime unix date-format epoch