在Oracle中存储为NUMBER字段的日期和时间 - 如何转换为DATE ...?

时间:2015-10-02 08:25:39

标签: oracle date numbers

我正在使用一个数据库,其中包含通话记录,并将每个通话的日期和时间存储在两个单独的NUMBER字段中。

我无法弄清楚存储在字段中的数字与通过客户端应用查看记录时屏幕上显示的日期和时间的关系。我已经尝试了所有与Julian相关的常用内容,自1970年以来的分钟数/秒等,但似乎无法弄明白。

对于2015年7月8日的日期和14:32:45的时间,这两个字段包含以下值:

  • 日期:132056840
  • 时间:236989696

任何人都可以了解如何从这些数字到正确的日期/时间吗?

非常感谢......

3 个答案:

答案 0 :(得分:3)

这似乎是一种十六进制魔法。

  

236989696,十进制数= E202D00,HEX = E:20:2D:00 = 14:32:45:00

     

132056840十进制数= 7DF0708,HEX = 7DF-07-08 = 2015-07-08

我不确定将此转换为字符串的最简单方法是什么,这取决于您是否要让Oracle数据库执行此操作,或者您希望在数据层中执行此操作。

答案 1 :(得分:1)

您可以尝试搜索这些列/表的存储过程。也许应用程序在那里编码。我想这值得尝试。

  SELECT *
  FROM user_source

答案 2 :(得分:1)

好的,这是一个部分答案......我已经找到了如何进行日期转换:

Year  = TRUNC(date_num / 65536)
Month = TRUNC((date_num - (Year * 65536)) / 256
Day   = date_num - (Year * 65536) - (Month * 256)

因此对于原始示例:

TRUNC(132056840 / 65536) = 2015
TRUNC((132056840 - (2015 * 65536)) / 256 = 7
132056840 - (2015 * 65536) - (7 * 256) = 8

为什么他们不能只使用DATE字段,我真的不知道!!!

只需要试着弄清楚如何计算现在的时间......