Oracle是我一直都沒有接觸過的資料庫自然就很不熟囉

不過最近開始在使用了

就把一些有用過的慢慢的記下來

防止以後忘了沒地方可以找

下面是日期運算的方式

select
TO_CHAR(SYSDATE - INTERVAL '3' YEAR, 'YYYYMMDDHH24') ToYEAR,
--=>從系統日期算起往前 3 年
TO_CHAR(SYSDATE - INTERVAL '3' month, 'YYYYMMDDHH24') ToMONTH,
--=>從系統日期算起往前 3 個月
TO_CHAR(SYSDATE - INTERVAL '30' DAY, 'YYYYMMDDHH24') ToDay,
--=>從系統日期算起往前 30 天
TO_CHAR(SYSDATE - INTERVAL '30' HOUR, 'YYYYMMDDHH24') ToHOUR,
--=>從系統日期算起往前 30 小時
TO_CHAR(SYSDATE - INTERVAL '30' minute, 'YYYYMMDD HH24:MI:SS') ToMinute,
--=>從系統日期算起往前 30 分鍾
TO_CHAR(SYSDATE - INTERVAL '50' second,'YYYYMMDD HH24:MI:SS') ToSecond,
--=>從系統日期算起往前 50 秒
SYSDATE
--系統日期
from xxx

結果:
2007060313	
2010030313	
2010050413	
2010060207	
20100603 12:39:36	
20100603 13:08:46	
2010/6/3 下午 01:09:36


2010060301.jpg

創作者介紹
創作者 鴨爸 的頭像
鴨爸

鴨爸的隨手寫寫

鴨爸 發表在 痞客邦 留言(3) 人氣()


留言列表 (3)

發表留言
  • argyle
  • 推一把!
  • 杰崧 高
  • 鴨爸你好~
    看了你這篇之後覺得很實用
    不過我實際用上的時候遇到了一個問題

    select trunc(sysdate) + interval '99' day from dual
    系統日期+ 99天 沒有問題
    可是如果+100天 以上的數字就會發生錯誤,

    錯誤訊息 : 間隔的前置精確度太小

    想請問鴨爸 那應該要怎麼處理好勒

    小弟是新手 希望鴨爸不吝嗇賜教~~

    感謝感謝~~
  • select TO_CHAR(SYSDATE - INTERVAL '100' DAY(3), 'YYYYMMDD') from dual;

    這樣就可以了,不過這樣最多3位數,如果要1000(千)或10000(萬),請修正一下day(x),應該就沒有問題了!!

    鴨爸 於 2012/08/27 08:40 回覆

  • 杰崧 高
  • 哇! 鴨爸真是太感謝了,這樣的方法聰明又方便
    真是太感謝了!!!!!3Q!!