Oracle - 将数字 8 位数字转换为日期

Posted

技术标签:

【中文标题】Oracle - 将数字 8 位数字转换为日期【英文标题】:Oracle - Convert number 8 digit number to date 【发布时间】:2013-07-09 08:14:27 【问题描述】:

我有一个 oracle 数据库,其中日期记录为 8 位数字,例如:

59696580 which represent '01/07/2013  00:00:00'
59696610 which represent '01/07/2013  00:30:00'

有人知道如何将这个 8 位数字转换为 Oracle SQL 中的日期吗?

谢谢

【问题讨论】:

这似乎是自 1900 年以来的分钟数。 看起来 1 = 1 分钟 所以,这个数字代表自 12/30/1899 01:00:00 以来的分钟数?? 转换是什么意思?让我们用java说? 【参考方案1】:

这可能取决于时区,但看起来这个数字是自12-30-1899 1:00:00 以来的分钟数,给定您希望它们代表的日期。

为了获取日期,您可以使用加法 + 运算符将天数添加到该基准时间。鉴于您的数字代表分钟,您可以除以 1440 以找出这些分钟代表多少天:

to_date('12-30-1899 1:00:00','MM-DD-YYYY HH24:Mi:SS') + (59696580/1440) 
to_date('12-30-1899 1:00:00','MM-DD-YYYY HH24:Mi:SS') + (59696610/1440) 

SQL Fiddle

【讨论】:

+1 不是 OP 想要的正确答案,但非常合乎逻辑。 SQL Fiddle 可能取决于时区,但通过使用 12-31-1899 1:00:00 作为基准时间得到了 OP 想要的结果。 SQL Fiddle. 这很棒。当我运行此查询时 (to_date('12-30-1899 1:00:00','MM-DD-YYYY HH24:Mi:SS') + (59696580/1440)) 我没有时间,只是日期为'01-Jul-13'。任何想法为什么? 可能与您的 NLS_DATE_FORMAT 变量有关。此变量控制您的会话如何将 DATEs 转换为 CHARs 以进行显示。 DATE 是对的,只需 change NLS_DATE_FORMAT 或使用 TO_CHAR(date, 'MM-DD-YYYY HH24:Mi:SS') 为其提供自定义格式。

以上是关于Oracle - 将数字 8 位数字转换为日期的主要内容,如果未能解决你的问题,请参考以下文章

后台日期时间是10位,前端13位怎么转化成10位再提交给后台

在Python里 请问怎么将数字日期转换成英文月份加数字日期? 并且替换分隔符?例子如下

关于时间格式的转换,MYSQL,PHP,10位数字表示时间

C# 中怎样将日期格式mm/dd/yy 转化为yyyy-mm-dd?

oracle 字符型中文日期怎么转换成日期型

在Excel中,如何将数字转化成日期?