Oracle取月份 不帶前面的0

2021-09-30 16:40:24 字數 1063 閱讀 3067

今天碰到只要取月份和天數,如果月份前面有0要去掉0.比如說2010-01-08 ,需要的結果是1-8. 引出了一系列的sql語句 

第一: 利用to_number的函式轉換自動截0 select to_number(to_char(sysdate,'mm'))||'-'||to_number(to_char(sysdate,'dd')) from dual; 

第二: 利用ltrim函式加固定引數去掉0 select ltrim(to_char(sysdate,'mm'),'0')||'-'||ltrim(to_char(sysdate,'dd'),'0') from dual; 

上面兩種方法實現了我們所需要的,共同的特點是都用到兩個函式了,但有沒有更簡單的方法呢 ? 我猜有的人肯定就想到了oracle是不是有這樣的格式呢 select to_char(sysdate,'m-d') from dual; 很可惜,提示錯誤,日期格式不存在 。不要灰心,我們繼續... 

第三:利用函式的特性。 

我們知道 select sysdate from dual ; 得到的值是:2010-1-8 11:06:18 那有沒有函式直接獲取到月份1和日8,

我們的猜測是正確的,確實有這樣的函式,出現了下面的函式, 

select extract(month from sysdate) ||'-'|| extract(day from sysdate) month from dual; 

注意: extract 具體的用法找'google'吧 ,不會讓你失望的。 又近了一步,滿足了吧,不要滿足了,下面還有。 

上面的方法有乙個共同的特徵,就是月和日都是分開取的,怎麼樣才能 合併到一起去,這樣多好啊 ! 

看我們的第四種方法: 

第四:巧用oracle自帶的格式 

select to_char(sysdate,'fmmm-dd') from dual; 

select to_char(sysdate,'yyyy-fmmm-dd') from dual;

select to_char(to_date('2014-02-05','yyyy-mm-dd'),'yyyy-fmmm-dd') from dual;

去掉Oracle日期中前面的數字0

sql select to char hire date,yyyy mm dd from employees where rownum 10 to char hi 1999 06 21 2000 01 13 1987 09 17 1996 02 17 1997 08 17 1994 06 07 19...

oracle 保留小數點前面的0的方法

遇到這麼個情況,flow欄位為0.556,當我試圖將其跟字串連線成新的字串的時候,就會出現0.開頭沒了的情況,如圖 解決方法問到兩種,方法1 將flow先to char,過程中指定格式 select to char flow fm999990.9999 string from nwom.lte sh...

js 基礎(0) 寫在前面的一些話

事件 聯絡了之前qq上認識的一位前端,我給他發了作品,他想考察我關於js的理解,但是對於他問的基礎js題目,三個問題自己只答出了乙個,浪費了一次大好的內推機會,懊惱,從這件事上可以看到自己的弱點,對於js部分不明白,不懂得的知識也不想著解決,沒有對於js認真的對待,其實之前一直在關心框架的學習,反而...