oracle使用to_char和next_day函數得到本周的第一天和最後一天日期

來源:互聯網
上載者:User
 

準確來說一個禮拜是從星期日開始到星期六結束的,而我們自己的習慣都是按一個禮拜的第一天為星期一,最後一天為星期日來的。

很多的查詢條件和統計都需要求得一周的時間段,也就是星期一到星期日的時間段, 我們用to_char和next_day兩個函數分別可以求得第一天和最後一天的日期。

1、TO_CHAR 結合 DECODE、TO_NUMBER 函數求得

/** 使用TO_CHAR(SYSDATE,'D')可以求得當前日期是一周的第幾天 
    得到的結果是星期日開始作為第1天的,
    那麼星期一就是第2天,星期日就是第8天
*/
SELECT TO_CHAR( SYSDATE ,'YYYY-MM-DD' ) 今天,  
       DECODE(TO_CHAR(SYSDATE,'D'),
              '1','星期日',
              '2','星期一',
              '3','星期二',
              '4','星期三',
              '5','星期四',
              '6','星期五',
              '7','星期六') 星期幾,
        TO_CHAR( SYSDATE - TO_NUMBER( TO_CHAR(SYSDATE,'D') ) + 2,'YYYY-MM-DD' ) 星期一,
        TO_CHAR( SYSDATE - TO_NUMBER( TO_CHAR(SYSDATE,'D') ) + 8,'YYYY-MM-DD' ) 星期日
  FROM DUAL

2、NEXT_DAY  結合 SUBSTR 函數求得

/** SUBSTR代替DECODE函數
    NEXT_DAY 函數可以指定當前日期的下一個星期幾的日期
    比如:今天是11-25日,星期六,那麼 NEXT_DAY(sysdate,'星期一') 
    得到的日期就是11-27,那麼這個星期一的日期就是 11-27 減去 7天
    而星期日的日期就是11-27減去1天
*/
SELECT TO_CHAR( SYSDATE ,'YYYY-MM-DD' ) 今天,  
       '星期'||SUBSTR('日一二三四五六',TO_NUMBER(TO_CHAR(SYSDATE,'D')),1) 星期幾,
       TO_CHAR(NEXT_DAY(sysdate,'星期一') - 7,'YYYY-MM-DD') 星期一,
       TO_CHAR(NEXT_DAY(sysdate,'星期一') - 1 ,'YYYY-MM-DD') 星期日
  FROM DUAL

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.