sql 獲取當前季度 (oracle)

笨辦法用case when 做判斷:

 select 
     CASE
      WHEN to_char(sysdate , 'mm') BETWEEN '01'
      AND '03' THEN 1
      WHEN to_char(sysdate , 'mm') BETWEEN '04'
      AND '06' THEN 2
      WHEN to_char(sysdate , 'mm') BETWEEN '07'
      AND '09' THEN 3
      ELSE 4
      END AS quarter 
 from dual

結果:

上述辦法好理解,下面一個使用函數:

大致思路:當前月份+2 除以3 使結果的整數位爲當前季度,獲取整數位 

trunc函數 獲取季度:

Select trunc((to_char(sysdate,'mm')+2)/3) from dual

結果:

TRUNC函數返回處理後的數值,其工作機制與ROUND函數極爲類似,只是該函數不對指定小數前或後的部分做相應舍入選擇處理,而統統截去。

其具體的語法格式如下

TRUNC(number[,decimals])

其中:

number 待做截取處理的數值

decimals 指明需保留小數點後面的位數。可選項,忽略它則截去所有的小數部分。

下面是該函數的使用情況:

TRUNC(89.985,2)=89.98

TRUNC(89.985)=89 (即取整)

TRUNC(89.985,-1)=80

注意:第二個參數可以爲負數,表示爲小數點左邊指定位數後面的部分截去,即均以0記。與取整類似,比如參數爲1即取整到十分位,如果是-1,則是取整到十位,以此類推;如果所設置的參數爲負數,且負數的位數大於整數的字節數的話,則返回爲0。如:TRUNC(89.985,-3)=0。

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