1. 程式人生 > >Oracle-23-單行函式之日期函式

Oracle-23-單行函式之日期函式

一、單行函式之日期函式

1.trunk(x[,y])——x進行截斷;

2.round(x[,y])——x進行取整;

3.next_day(x,day)——返回從x開始,一個day的日期;

4.months_between(x,y)——返回xY之間的差值;

5.last_day(x)——返回包含該月的最後一天;

6.add_months(x,y)——返回x加上y個月後的結果。

1:查詢當前系統日期

解:注意sysdate的用法:


注意Oracle預設日期格式:dd-mon-yy

2:練習add_months函式

解:在當前系統時間基礎上加1個月:


3:練習last_day函式

解:last_day(sysdate)即為當前系統時間所在月的最後一天,比如例1得到當前系統時間為06-4月-16,那麼所在月份為4月,最後一天為30日,即30-4月-16。


4:檢視當前系統所在月的下個月的最後一天。

解:


5練習next_day函式

解:


當前系統時間是16年4月6日,那麼next_day(sysdate,5)計算的是16年4月6日所在星期的第5天的日期,所在星期預設從週日(16年4月3日)開始算第1天,則第五天是週四,也就是16年4月7日。


5:練習moths_between函式

解:計算月份之間的差值


6:練習round函式

解:


round函式說明】

1round(sysdate,’yyyy’)中的yyyy是按照開始取整;

2round如果按照來取整,那麼對於1-6月的四舍7-12月的五入比如16年6月,round取整就是16年1月,如果16年9月,round取整就是17年1月;

3round如果按照來取整,那麼對於1-15日的四舍16-31日的五入比如16年6月15日,round取整就是16年6月1日,如果16年6月30日,round取整就是16年7月1日。

7:練習trunc函式

解:


trunc函式說明】

1trunc(sysdate,’yyyy’)

中的yyyy是按照開始截斷;

2trunc如果按照來截斷,那麼直接將全部切掉,改成11日,沒有四捨五入一說,直接切。比如16年6月1日,trunc截斷就是16年1月1日;

3trunc如果按照來截斷,那麼直接將切掉,改成1日,沒有四捨五入一說,直接切。比如16年6月15日,trunc截斷就是16年6月1日。

三、單行函式之轉換函式

在寫SQL語句的時候,可能希望一個值從一種資料型別轉換為另一種資料型別,我們就可以用Oracle中的轉換函式來實現,這樣子可以避免編寫程式實現,進一步提高SQL語句的效能和效率。

1.bin_to_num(x)——x轉換為一個二進位制數;

2.chartorowid(x)——x轉換為rowid型別,rowid長度為18位;

3.rowidtochar(x)——rowid x轉換為一個varchar2型別的字元;

4.rowidtonchar(x)——rowid x轉換為一個nvarchar2型別的字元;

5.to_char(x[, format])——x轉換為一個varchar2字串,format

可選引數,用來指定x的格式;

6.to_date(x[, format])——x轉換為一個DATEformat為可選引數,用來指定x的格式;

7.to_number(x[,format])——x轉換為一個numberformat為可選引數,用來指定x的格式。

8:練習to_char函式。

解:


注意上圖中的命令。

9:練習to_date函式

解:如果現在有一個日期表,格式固定,那麼insert into語句在插入資料時候可能出現錯誤,這時候就需要to_date函式格式化日期,然後才能正確插入日期資料。


報錯原因是與系統預設格式不匹配。如果加上自定義格式,如下:


或者就按照系統預設日期格式插入資料,如下: