1. 程式人生 > >Oracle 資料庫 根據時間欄位求出該時間所在的月、季、周

Oracle 資料庫 根據時間欄位求出該時間所在的月、季、周

在資料庫中,沒有維護類似萬年曆的表的時候,我們表中只有存著yyyy-mm-dd的日期資料,但是我們需要得出該日期所在的年月季周等資訊,此時便可用到以下SQL:
select to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyyiw') as week, --求第幾周
      to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyyww') as week2, --求第幾周
      to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyy') as year, --求第幾年
      to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyymm') as month, --求本年的第幾月
      to_char(TO_DATE('20110101', 'YYYYMMDD'), 'yyyyddd') as day, --求本年的第幾天
      to_char(TO_DATE('20110401', 'YYYYMMDD'), 'yyyyq') as quarter -- 求本年的第幾季度
 from dual

注備:如果已經是日期型別,則可不用TO_DATE,直接TO_CHAR(欄位名,'yyyyq')即可!

第一個和第二個的區別:第一個是以完整週計算 ,比如這年的前一年的最後一天是星期三,那麼這一年的一號,是算在去年的那一週裡面,例子中20110101,便是2010的第52周,但是結果顯示的是:【201152,這裡需要注意】,第二個則是以一號所在周為第一週,一月一號不管星期幾,就以它所在的周為第一週;