笨辦法用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。