首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Oracle将日期转换为数字

Oracle将日期转换为数字
EN

Stack Overflow用户
提问于 2014-03-16 11:39:06
回答 2查看 25.6K关注 0票数 1

我想在oracle 11g中将日期转换为数字。

日期存储在(12/03/2013 12:23:00)。

我想把它转换成number (日期对应的数字值)。在java中,我们将date转换为long。

我想在这里做同样的事情。

代码语言:javascript
运行
复制
    Calendar c = Calendar.getInstance();
    c.set(2013, 05, 23, 0, 0, 0);

    Date date = c.getTime();
    System.out.println("Date is  " + date);
    long longDate = date.getTime();
    System.out.println("Date as long :" + longDate);
    Date d = new Date(longDate);
    System.out.println("Converted Date :" + d);*

输出为:

**日期:孙俊23 00:00:00 SGT 2013

最长日期:1371916800981

转换日期:孙俊23 00:00:00 SGT 2013**

现在我想将值存储为1371916800981

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-16 21:16:22

我猜您想要的long数据类型类似于1970-01-01以来的秒数或毫秒数。

要做到这一点,只需要一点算术:

代码语言:javascript
运行
复制
select (to_date(s1, 'MM/DD/YYYY HH24:MI:SS') -
        to_date('1970-01-01', 'YYYY-MM-DD')
       ) *24*60*60
from (select '12/03/2013 12:23:00' as s1 from dual
     ) t

我注意到您的结果使用的是当前时间戳。这可能包括毫秒,而这个常量日期格式不包括毫秒。

票数 3
EN

Stack Overflow用户

发布于 2014-03-16 18:27:59

您可以借助RAW数据类型实现这一点:

代码语言:javascript
运行
复制
SELECT 
  s1,
  to_number(TO_CHAR(s1,'YYYYMMDDHH24MISS')) as s2,
  utl_raw.cast_to_raw(s1) as d1,
  utl_raw.cast_to_raw(s2) as d2,
  round(utl_raw.cast_to_number(utl_raw.cast_to_raw(s1)),20) as s1,
  round(utl_raw.cast_to_number(utl_raw.cast_to_raw(s2)),20) as s2,
  utl_raw.cast_to_number(utl_raw.cast_to_raw(s1)) - utl_raw.cast_to_number(utl_raw.cast_to_raw(s2)) as s1_s2_diff
FROM 
( select 
    sysdate as s1, 
    sysdate-1/24/60/60 as s2 
  from dual );

输出:

代码语言:javascript
运行
复制
S1                  S2      
------------------- --------------
2014.03.16 11:14:16 20140316111416               

D1                                     D2
-------------------------------------- --------------------------------------
323031342E30332E31362031313A31343A3136 323031342E30332E31362031313A31343A3135

S1_1                                   S2_1    
-------------------------------------- --------------------------------------
-53524955535055524769525243,5249435247 -53524955535055524769525243,5249435248

SDIFF     
------------    
0,0000000001  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22432662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档