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
变量有关。此变量控制您的会话如何将 DATE
s 转换为 CHAR
s 以进行显示。 DATE
是对的,只需 change NLS_DATE_FORMAT
或使用 TO_CHAR(date, 'MM-DD-YYYY HH24:Mi:SS')
为其提供自定义格式。以上是关于Oracle - 将数字 8 位数字转换为日期的主要内容,如果未能解决你的问题,请参考以下文章
后台日期时间是10位,前端13位怎么转化成10位再提交给后台
在Python里 请问怎么将数字日期转换成英文月份加数字日期? 并且替换分隔符?例子如下