Oracle 常用函數-日期函數,oracle日期函數

來源:互聯網
上載者:User

Oracle 常用函數-日期函數,oracle日期函數

       在oracle的開發和使用中,經常需要用到各種各樣的日期函數,網上日期函數搜尋起來一大把,用起來很多有一些小問題,自己動手總結記錄下,也能讓有緣的同學少走一點彎路。

--常用日期型函數

1、Sysdate當前日期和時間

Select sysdate from dual;

2、Add_months(d,n)當前日期d後推n個月

用於從一個日期值增加或減少一些月份

當前日期後兩個月:

Select add_months(sysdate,2) from dual;

當前日期前三個月:

Select add_months(sysdate,-3) from dual;

 

3、dbtimezone()返回時區

select dbtimezone from dual;

 

4,round[舍入到最接近的日期](day:舍入到最接近的星期日)

   select sysdate S1,

   round(sysdate) S2 ,

   round(sysdate,'year') YEAR,

   round(sysdate,'month') MONTH ,

   round(sysdate,'day') DAY fromdual

 

5、next_day( date, weekday )指定日期的下一個日期

文法 : next_day( date,weekday )

select Next_day(to_date(20130107,'yyyymmdd'), 2)  from dual ;  

該函數功能很強大,但是需要注意,周日是1,周一是2,以此類推

 

6,trunc[截斷到最接近的日期,單位為天] ,返回的是日期類型

 select sysdate S1,

       trunc(sysdate) S2, --返回當前日期,無時分秒

       trunc(sysdate, 'year') YEAR,--返回當前年的1月1日,無時分秒

       trunc(sysdate, 'month')MONTH, --返回當前月的1日,無時分秒

       trunc(sysdate, 'day') DAY --返回當前星期的星期天,無時分秒

  from dual

7、last_day一個月中的最後一天

select last_day(Trunc(SYSDATE, 'MONTH')) from dual

返回最後一天;

如果直接使用 selectlast_day(SYSDATE) from dual,不僅僅會返回日期,還會返回當前的時分秒等內容;

 

8、to_date,to_char日期和字元轉換函式用法

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;   --日期轉化為字串  

select to_char(sysdate,'yyyy') as nowYear  from dual;   --擷取時間的年  

select to_char(sysdate,'q')    asnowSecond from dual;  --擷取時間的季度

select to_char(sysdate,'mm')    asnowMonth from dual;   --擷取時間的月  

select to_char(sysdate,'dd')    asnowDay    from dual;   -擷取時間的日  

select to_char(sysdate,'hh24') as nowHour  from dual;   --擷取時間的時  

select to_char(sysdate,'mi')    asnowMinute from dual;   --擷取時間的分  

select to_char(sysdate,'ss')    asnowSecond from dual;   --擷取時間的秒

將字串轉換為日期類型  

select to_date('2013-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss')  from dual ;

 

9、months_between兩個日期之間的月份差

select months_between(to_date(201302,'yyyymm'),to_date(201212,'yyyymm'))as ans from dual;    

 

10、localtimestamp()返回會話中的日期和時間

 select localtimestamp from dual;

常用日期資料格式(該段為摘抄)

Y或YY或YYY年的最後一位,兩位或三位 Select to_char(sysdate,’YYY’) from dual; 002表示2002年

SYEAR或YEAR SYEAR使公元前的年份前加一負號 Select to_char(sysdate,’SYEAR’) from dual; -1112表示公元前111 2年

Q 季度,1~3月為第一季度 Select to_char(sysdate,’Q’) from dual; 2表示第二季度①

MM 月份數 Select to_char(sysdate,’MM’) from dual; 12表示12月

RM 月份的羅馬錶示 Selectto_char(sysdate,’RM’) from dual; IV表示4月

Month 用9個字元長度表示的月份名 Select to_char(sysdate,’Month’) from dual; May後跟6個空格表示5月

WW 當年第幾周 Select to_char(sysdate,’WW’) from dual; 24表示2002年6月13日為第24周

W 本月第幾周 Select to_char(sysdate,’W’) from dual; 2002年10月1日為第1周

DDD 當年第幾, 1月1日為001,2月1日為032 Select to_char(sysdate,’DDD’) from dual; 363 2002年1 2月2 9日為第363天

DD 當月第幾天 Select to_char(sysdate,’DD’) from dual; 04 10月4日為第4天

D 周內第幾天 Select to_char(sysdate,’D’) from dual; 5 2002年3月14日為星期一

DY 周內第幾天縮寫 Selectto_char(sysdate,’DY’) from dual; SUN 2002年3月24日為星期天

HH或HH12 12進位小時數 Selectto_char(sysdate,’HH’) from dual; 02午夜2點過8分為02

HH24 24小時制 Select to_char(sysdate,’HH24’) from dual; 14下午2點08分為14

MI 分鐘數(0~59) Select to_char(sysdate,’MI’) from dual; 17下午4點17分

SS 秒數(0~59) Select to_char(sysdate,’SS’) from dual; 22 11點3分22秒

提示注意不要將MM格式用於分鐘(分鐘應該使用MI)。MM是用於月份的格式,將它用於分鐘也能工作,但結果是錯誤的。

 

--日期函數的一些具體用法

 

1、獲得上月的最後一天:

select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay fromdual;

 

2、上個月的今天(同日期)

select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual;

 

3、上個月的第一天

select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') First_Day_Last_Month from dual;

SELECT Trunc(Trunc(SYSDATE, 'MONTH') - 1, 'MONTH')First_Day_Last_Month   FROM dual;

 

4、獲得日期對應的星期幾     

select to_char(to_date('2013-04-07','yyyy-mm-dd'),'day') from dual;  

  

5、從當前日期到某一個日期的天數     

    select floor(sysdate -to_date('20130405','yyyymmdd')) from dual;   

 

6、找出今年的天數     

   selectadd_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual   

看今年是366天,還是365天。

 

7、簡單的找出閏年   

如果2月份的天數是28天,那麼就不是閏年   

 select decode(to_char(last_day(to_date('200902','yyyymm') ),'dd'),'28','不是閏年','閏年' )from dual   

 

8、當前日期是本年的第幾天     

  selectto_char(sysdate,'ddd'),sysdate from dual;       

   

9、尋找上月的第一天和最後一刻,本月的第一天和最後一刻

     SELECT Trunc(Trunc(SYSDATE,'MONTH') - 1, 'MONTH') First_Day_Last_Month,

       Trunc(SYSDATE, 'MONTH') - 1 /86400 Last_Day_Last_Month,

       Trunc(SYSDATE, 'MONTH')First_Day_Cur_Month,

       LAST_DAY(Trunc(SYSDATE,'MONTH')) + 1 - 1 / 86400 Last_Day_Cur_Month

   FROM dual;

 

 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.