關於oracle中對時間日期進行的一些運算(求日期的差值等)


// 沒有區分大小寫

select * from hrk_person where EMPLOYE_DATE>to_date('20170615','yyyy-mm-dd hh24:mi:ss')
select * from hrk_person where EMPLOYE_DATE> date '2017-06-15'

//求日期差時要注意日期的格式

1..獲取等操作

--獲取系統日期
select sysdate from dual;
--獲取系統時間
select current_timestamp from dual;

--格式化日期
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
--將字符串轉換為日期
select to_date('2019-01-01 21:01:01','yyyy-mm-dd hh24:mi:ss') from dual; --24小時制
select to_date('2019-01-01 01:01:01','yyyy-MM-dd hh:mi:ss') from dual; --12小時制

--在系統時間增加月份
select add_months(sysdate,3) from dual;
--在系統時間增加年份
select add_months(sysdate,3*12) from dual;

--獲取日期中該月的最后一天
select last_day(sysdate) from dual;
select last_day(to_date('2014-02-01 23:12:12','yyyy-mm-dd hh24:mi:ss')) from dual;
--獲取下個星期二是日期
select next_day(sysdate,3) from dual; --星期日 = 1 星期一 = 2 星期二 = 3 星期三 = 4 星期四 = 5 星期五 = 6 星期六 = 7
--獲取日期/時間的單獨部分,比如年、月、日、小時、分鍾、秒
--ear、month、day、hour、minute、second
select extract(year from sysdate) from dual;

 

2.計算兩個日期之間的時間差(年、月、日、時、分、秒)

--計算兩個日期之間相差多少月
  select months_between(add_months(sysdate,5),sysdate) from dual;
  select months_between(
    to_date('2021-12-2 23:45:57','yyyy-mm-dd hh24:mi:ss') , 
    to_date('2001-11-2 23:45:57','yyyy-mm-dd hh24:mi:ss')
  ) as 相差月數
  from dual;
--計算兩個日期之間相差多少年,就在求月數的基礎上除12

--計算兩個日期之間相差多少天(要先將字符串轉換為日期類型)

  select TO_NUMBER(

    to_date('2002-12-2 23:45:57','yyyy-mm-dd hh24:mi:ss') - to_date('2001-11-2 23:45:57','yyyy-mm-dd hh24:mi:ss')

  )    as 相差天數
  from dual;
  select TO_NUMBER(

    to_date(to_char(add_months(sysdate,1),'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') -

    to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss')

  )    as 相差天數

  from dual;

--計算兩個日期之間相差多少個小時
  select TO_NUMBER(to_date('2002-12-2 23:45:57','yyyy-mm-dd hh24:mi:ss') - to_date('2001-11-2 23:45:57','yyyy-mm-dd hh24:mi:ss'))*24
  as 相差小時數
  from dual;
--相差分鍾數就在后面*24*60,秒數在后面*24*60*60

 

 

求分鍾:

SELECT CEIL((TO_DATE('2016-07-19 10:10:10' , 'YYYY-MM-DD HH24-MI-SS') - TO_DATE('2016-07-19 10:07:50' , 'YYYY-MM-DD HH24-MI-SS')) * 24*60  )  as HOURS FROM DUAL;

執行結果如下

HOURS 
3

 

求小時:

SELECT CEIL((TO_DATE('2016-07-19 15:10:10' , 'YYYY-MM-DD HH24-MI-SS') - TO_DATE('2016-07-19 10:07:50' , 'YYYY-MM-DD HH24-MI-SS')) * 24  )  AS minutesFROM DUAL;

執行結果如下

minutes
6

 

求秒:

SELECT CEIL((TO_DATE('2016-07-19 10:10:10' , 'YYYY-MM-DD HH24-MI-SS') - TO_DATE('2016-07-19 10:07:50' , 'YYYY-MM-DD HH24-MI-SS')) * 24*60*60  )   as SECOND FROM DUAL;

執行結果如下:

SECOND
140




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM