iT邦幫忙

DAY 4
2

哇咧~夠了(Oracle SQL)系列 第 4

Oracle 日期之我轉、我轉、我轉..轉..轉......(2013/09/19)

常常被日期轉換搞得七葷八素嗎?雖說隨著資料庫版本不斷更新後,應該有不少新的轉換法函數可用,我還是照例,來個老調重彈吧!能不能激起火花,閃個靈感,看緣分囉。

  1. 西元年轉民國年、月初、下個月某一天,夠簡單吧!所以我也不太想寫.....其實是...怕被糾正啦!
    西元年轉民國年

    select to_char(to_number(to_char(sysdate, 'yyyymmdd')) - 19110000) from dual;
    Select to_Char(Sysdate,'eeyyy/mm/dd hh24:mi:ss',
    'nls_calendar = ''Roc Official''') from dual;

月初

select trunc(sysdate, 'mm')
 from dual;

下個月某一天,例如:25號,改下面25這個數字即可,但不要改超過當月最後一天喔...例如:9/31,切記切記

select trunc(add_months(sysdate, 1), 'mm') + 25 - 1
 from dual;
  1. 來個複雜點的,下個星期五,sun=1,fri=6, sat=7,把下面:wks改成對應數字6即可。

    SELECT Sysdate + DECODE ( SIGN ( :wks - To_Number ( TO_CHAR ( Sysdate,
    'd' ) ) ),
    0, 7,

    • 1, 7 - ( To_Number ( TO_CHAR ( Sysdate, 'd' )) - :wks ),
      ( :wks - To_Number ( To_Char ( Sysdate, 'd' ) ) + 7 ) )
      "Next xxx-day"
      FROM dual;

當然,看不懂很正常,改成PL/SQL可能簡單多了,
Oracle 應該有較簡易的函數吧?高手幫忙解答!

  1. 下一個最接近的上旬、中旬、下旬的第一天?(ex, 9/1, 9/11, 9/21)?
    這個當作挑戰題吧!

稍晚再用討論方式....


上一篇
(續)單一SQL好,還是PL/SQL好?
下一篇
數字轉成等比例的符號(Oracle SQL)。(2013/09/20)
系列文
哇咧~夠了(Oracle SQL)28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
月半車甫
iT邦研究生 3 級 ‧ 2013-09-21 21:52:34

這要等我上班才有環境可以測試一下了。Sorry....下一個最接近的上旬、中旬、下旬的第一天?(ex, 9/1, 9/11, 9/21)?

月半車甫 iT邦研究生 3 級 ‧ 2013-09-24 08:07:58 檢舉

這個習題,我改用分享了,單獨一篇文
http://ithelp.ithome.com.tw/question/10128897

我要留言

立即登入留言