<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    tbwshc

    將TIMESTAMP類型的差值轉化為秒的方法

    兩個TIMESTAMP之差得到的是INTERVAL類型,而有時我們只需要得到兩個時間相差的秒數,如果變成INTERVAL之后,想要獲取這個值會非常麻煩。

     

     

    比較常見的方法是使用EXTRACT來抽取獲得的INTERVAL類型的日、時、分和秒來分別計算并求和:

    SQL> create table t_timestamp (id number, t1 timestamp, t2 timestamp);

    Table created.

    SQL> insert into t_timestamp
    2 values (1, to_timestamp('20120603222324', 'yyyymmddhh24miss'), to_timestamp('20120526152354', 'yyyymmddhh24miss'));

    1 row created.

    SQL> commit;

    Commit complete.

    SQL> select t1 - t2 from t_timestamp where id = 1;

    T1-T2
    ---------------------------------------------------------------------------
    +000000008 06:59:30.000000

    SQL> with t as (select t1 - t2 interval from t_timestamp where id = 1)
    2 select extract(day from interval) * 86400
    3 + extract(hour from interval) * 3600
    4 + extract(minute from interval) * 60
    5 + extract(second from interval) interval
    6 from t;

    INTERVAL
    ----------
    716370

    對于不需要考慮毫秒的情況而言,這種計算過于麻煩了,而對于DATE類型而言,tb計算差值非常方便,直接就可以返回兩個日期相差的天數,在乘以86400就可以得到結果。

    可惜的是,無論是ROUND還是TRUNC參數,都不支持TIMESTAMP類型:

    SQL> select trunc(t1, 'ss') from t_timestamp where id = 1;
    select trunc(t1, 'ss') from t_timestamp where id = 1
    *
    ERROR at line 1:
    ORA-01899: bad precision specifier


    SQL> select round(t1, 'ss') from t_timestamp where id = 1;
    select round(t1, 'ss') from t_timestamp where id = 1
    *
    ERROR at line 1:
    ORA-01899: bad precision specifier

    其實對于這個問題,最簡單的方法是利用隱式轉換,變成DATE類型的操作:

    SQL> select (t1 - 0 - (t2 - 0)) * 86400 from t_timestamp;

    (T1-0-(T2-0))*86400
    -------------------
    716370

    當然最標準的方法還是顯示的轉換:

    SQL> select (cast(t1 as date) - cast(t2 as date)) * 86400 from t_timestamp;

    (CAST(T1ASDATE)-CAST(T2ASDATE))*86400
    -------------------------------------
    716370

    顯然這種方便比利用EXTRACT要簡單得多。

     


    posted on 2012-09-04 16:52 chen11-1 閱讀(1871) 評論(0)  編輯  收藏

    主站蜘蛛池模板: 亚洲国产精品一区二区第一页免| 亚洲欧美熟妇综合久久久久| 亚洲人成日本在线观看| 无码国产精品一区二区免费模式| 国产成人亚洲精品狼色在线| 国产日韩AV免费无码一区二区三区| 免费一级特黄特色大片在线| 一区二区免费在线观看| 6080午夜一级毛片免费看6080夜福利 | 亚洲日本在线观看| 国内精品一级毛片免费看| 亚洲AV综合色区无码另类小说| 亚洲精品成a人在线观看☆| 午夜成人免费视频| 精品国产亚洲男女在线线电影 | 久久久久久久亚洲精品| 亚洲经典在线观看| 国产免费看JIZZ视频| 麻豆高清免费国产一区| 亚洲精品福利视频| 和日本免费不卡在线v| 亚洲欧美自偷自拍另类视| 50岁老女人的毛片免费观看| 亚洲成人免费网站| 精品免费国产一区二区| h视频免费高清在线观看| 久久久无码精品亚洲日韩蜜桃| 99在线免费观看视频| 一本天堂ⅴ无码亚洲道久久| 免费又黄又爽又猛的毛片| 亚洲中文字幕久久久一区| 亚洲 自拍 另类小说综合图区| 中国一级特黄的片子免费| 亚洲国产一区二区三区| 东方aⅴ免费观看久久av| 亚洲一区二区三区播放在线| 国产一级淫片a免费播放口| 亚洲国产韩国一区二区| 亚洲?v女人的天堂在线观看| 久久香蕉国产线看免费| 国产成A人亚洲精V品无码|