Oracle Date 和 Timestamp

格式:

YYYY-MM-DD HH24:MI:SS.FF  

yyyy/mm/dd hh24:mi:ss.ff

YYYY-MM-DD HH24:MI:SS.FF3   /6 /9

 

1.天數相加

select SYSDATE+10 from dual; --天數相加
select systimestamp+10 from dual;--天數相加

2.獲取時間戳 ('1970-1-1 8' 到某時間的毫秒數  1天=1*24*60*60*1000=86400000 毫秒)

select
  to_char(
  (SYSDATE - TO_DATE('1970-1-1 8', 'YYYY-MM-DD HH24')) * 86400000 + TO_NUMBER(TO_CHAR(SYSTIMESTAMP(3), 'FF'))
  ) from dual;

時間戳轉換爲某種格式時間

SELECT TO_CHAR(1575961555442 / (1000 * 60 * 60 * 24) +      
        TO_DATE('1970-01-01 08:00:00', 'YYYY/MM/DD HH:MI:SS'), 'YYYY/MM/DD HH24:MI:SS')      
 FROM DUAL

 

3.獲取毫秒數及更多

select TO_CHAR(SYSTIMESTAMP(3), 'FF') from dual; --獲取3位 或 TO_CHAR(SYSTIMESTAMP(9), 'FF3') 

select TO_CHAR(SYSTIMESTAMP(6), 'FF') from dual;--獲取6位 或 TO_CHAR(SYSTIMESTAMP(6), 'FF6') 

select TO_NUMBER(TO_CHAR(SYSTIMESTAMP(3), 'FF')) from dual;

4.判斷時間秒數差

select abs(ceil((sysdate-to_date(to_char(nvl(us_online_date,to_date('2000-01-01','yyyy-mm-dd')),'yyyy/mm/dd hh24:mi:ss'),'yyyy/mm/dd hh24:mi:ss'))*24*60*60))< 120 from t

--select abs(ceil((sysdate-us_online_date)*24*60*60))< 120 from t

-- ceil(n) 取大於等於數值n的最小整數;

--abs(n) 取絕對值

5.相互轉換

1. to_date('2000-01-01','yyyy-mm-dd')

2. to_char(sysdate,'yyyy-mm-dd')

3. TO_CHAR(SYSTIMESTAMP(3), 'FF')

4. TO_NUMBER(TO_CHAR(SYSTIMESTAMP(3), 'FF'))

5. to_timestamp('2018-01-24 12:13:56.123000','yyyy-mm-dd hh24:mi:ss:ff6')

6. to_timestamp(to_char(systimestamp,'YYYY-MM-DD HH24:MI:SS:FF3')||(100+11),'yyyy-mm-dd hh24:mi:ss:ff6')

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章