解决方案 »

  1.   

    需求是select出来一个表的varcahr2 的字段如"201301020304"需要在另一个表的两个number字段之间的数据
      

  2.   

    你是想吧double转换为日期吧。。
      

  3.   

    明白你的意思了,数字转日期用如下方法:select to_date('1970-01-01','yyyy-mm-dd')+1383893085000/(3600*24*1000) from dual
      

  4.   

    select to_date('1970-01-01 08:00:00','yyyy-MM-dd HH:mm:ss')+1383893085000/(3600*24*1000) from dual
      

  5.   

    啊。少除1000就行了呗?
    这个转换就是依据1970年这个时间点往后加的数那还是没有精确到秒啊
    你举几个例子我看看。。SELECT t1.LOGIN_TIME,t2.usetime,t1.LGOUT_TIME,to_char(to_date('1970-01-01 08:00:00','yyyy-mm-dd hh24:mi:ss')+t1.LOGIN_TIME/24/60/60,'yyyyMMddHH24mmss'),to_char(to_date('1970-01-01 08:00:00','yyyy-mm-dd hh24:mi:ss')+t1.LGOUT_TIME/24/60/60,'yyyyMMddHH24mmss')  FROM t_separate_servlog_day t1 ,t_separate_internet_day t2 
    WHERE t1.USERIP=t2.USERIP 
    AND t2.usetime >= to_char(to_date('1970-01-01 08:00:00','yyyy-mm-dd hh24:mi:ss')+t1.LOGIN_TIME/24/60/60,'yyyyMMddHH24mmss') 
    AND t2.usetime <= to_char(to_date('1970-01-01 08:00:00','yyyy-mm-dd hh24:mi:ss')+t1.LGOUT_TIME/24/60/60,'yyyyMMddHH24mmss')      这样的  查出来的 数据是 LOGIN_TIME USETIME              LGOUT_TIME TO_CHAR(TO_DAT TO_CHAR(TO_DAT
    ---------- -------------------- ---------- -------------- --------------
    1395044645 20140317144338       1395046627 20140317160305 20140317160307
    1395044645 20140317144841       1395046627 20140317160305 20140317160307
    1395044645 20140317144059       1395046627 20140317160305 20140317160307
      

  6.   

    1395044645 转为date应该是2014-03-17 16:24:05
      

  7.   

    select to_date('1970-01-01','yyyy-mm-dd')+(1395044645+28800)/(3600*24) from dual
    格林尼治时间(GMT)与我们本地时间(北京时间)相差8小时,所以还需要加上28800
      

  8.   

    select to_date('1970-01-01','yyyy-mm-dd')+(1395044645+28800)/(3600*24) from dual
    格林尼治时间(GMT)与我们本地时间(北京时间)相差8小时,所以还需要加上28800加过的 to_date('1970-01-01 08:00:00' 我是从8点开始的   就是后面的格式化的时候出了点问题 现在好了 谢谢