当前位置: 代码迷 >> 综合 >> Oracle Date 和 Timestamp
  详细解决方案

Oracle Date 和 Timestamp

热度:90   发布时间:2023-12-21 05:16:55.0

格式:

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')

 

  相关解决方案