Oracle時間運算 to_char() sysdate


 1.在Oralce中,對日期進行加減操作的默認單位是天,也就是說如果我們向當前日期加1的話是加上一天,而不是一秒或一小時。那么對一天中的一段時間進行加減要怎么做呢?很簡單!只需將它們轉化為以天為單位即可。

2.月份的加減和日期加減相比要難了很多,因為每個月份的天數並不是固定的,可能是31,30,29,28。如果采用上面的方法將月份轉換成實際天數將不可避免地出現多個判斷,幸虧Oracle為我們提供了一個add_months函數,這個函數會自動判斷月份的天數。看看下面的例子:

求兩個日期相差的月數:
通常情況下兩個時間相減將得到以天數為單位的結果,可是有時我們更希望得到以月為單位的結果,如果手動轉換這太麻煩了,所以Oracle又提供了一個函數,這個函數就是months_between。

months_between函數有2個參數,第一個參數是結束日期,第二個參數是開始日期,Oracle用第一個參數減去第二個參數得到月份數。所以結果有可能會是負數的。

3.年份加減:
Oracle並不直接提供對年份進行加減的函數,不過有了add_months和months_between函數,我們照樣可以做到。

為當前日期加上2年:

求兩個日期相差幾年:

直接將兩個日期相減,然后除以365天並不准確,但是不管一年有多少天它總是只有12個月,所以利用這一點我們可以先求出兩個日期相差的月數,再除以12就得出相差的年數了

求每月的最后一天:

求每月的第一天:
Oracle提供了last_day讓我們能夠求出所在月份的最后一天,但沒有對應的first_day函數,如果有這方面的需求,只需要稍微動一下腦筋,利用last_day函數即可。例如下面的SQL語句就是求出下個月的第一天:

在這里我們將“每月的第一天”轉換成“上個月最后一天的下一天”,問題就解決了

4.求下一個星期幾:

有時候我們會碰上“下個星期五是幾號啊?”這樣常見的問題。Oracle為此提供了一個函數:next_day,它的語法是這樣的:next_day(date, string)。其中第一個參數date告訴Oracle從什么時候開始算起,第二個參數string則告訴Oracle要取的工作日。

下面我們看看如何得到下個星期五的日期:

如果你不確定自己的時區或者你擔心從一個時區移植到另一個時區時,SQL語句會出錯,Oracle還允許你用數字的形式來表示工作日。但是要記得一點:1表示的是周日,2表示的是周一,3表示的是周二,依此類推。

例如我要查下個周三是什么時候,則函數是這樣寫的:next_day(sysdate, 4)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM