Oracle日期操作函數


Oracle采用date類型表示日期時間,這是一個7字節的固定寬度的數據類型,有7個屬性,包括:世紀、世紀中哪一年、月份、月中的哪一天、小時、分鍾和秒。本文中把date類型稱為日期時間類型,簡稱日期。

對編程語言來說,日期是用字符串來顯示和書寫的,如果設置了NLS_DATE_FORMAT環境變量,Oracle可以自動的對日期和字符串進行轉換,但是,程序員更多的是采用to_char和to_date兩個函數對日期和字符串進行轉換。

一、把日期轉換為字符串

to_char函數把日期轉換成字符串,一般用於 select 和 from 之間的字段列表中的日期輸出,語法如下:

to_char(日期,格式)

日期格式用字符串來表達,格式控制標識如下,加粗顯示的是常用的格式:

d:一周中的星期幾。

day:天的名字,使用空格填充到9個字符。

dd:月中的第幾天。

ddd:年中的第幾天。

dy:天的簡寫名。

iw:ISO標准的年中的第幾周。

iyyy:ISO標准的四位年份。

yyyy:四位年份。

yyy,yy,y:年份的最后三位,兩位,一位。

hh:小時,按12小時計。

hh24:小時,按24小時計。

mi:分。

ss:秒。

mm:月。

mon:月份的簡寫。

month:月份的全名。

w:該月的第幾個星期。

ww:年中的第幾個星期。

舉例:

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

二、把字符串轉換日期

to_date函數把字符串轉換成日期,一般用於insert、update和where之后的條件中的日期輸入,語法如下:

to_date(字符串表示的日期,格式)

日期格式用字符串來表達,與to_char函數相同。

先創建一個用於測試的表tt。

create table tt ( c1 date);

舉列:

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

在update語句中把字符串轉換為日期。

在這里插入圖片描述

在where條件中把字符串轉換為日期。

在這里插入圖片描述

三、日期運算

Oracle數據庫提供了多種對日期加減的計算方法。

為了方便日期的顯示,先設置好NLS_DATE_FORMAT環境變量,這個環境變量的用法在本文的“四、日期環境變量”章節中介紹。

export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"

1、直接加減

可以在日期上進行加減一個小數(單位是天)得到一個新的時間。

1)取當前時間和一天后的時間。

在這里插入圖片描述

2)取當前時間和一小時后的時間。

在這里插入圖片描述

3)獲取當前時間和一秒后的時間。

在這里插入圖片描述

2、add_months函數

對日期直接加減的方式不用於月的加減,因為每月的天數不一樣,例如2020-01-01,加上30天之后是2020-01-31,不是2020-02-01。如果希望把日期加上一個完整的月(不論月的大小),可以用add_months函數。

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-df8b7N0G-1583890413413)(media/d5b79b4d06097b5768b3a66c6c0ce668.png)]

從上面的例子可以看出,月有大有小:1)如果下月的天小於本月的天,add_months后取下月的最后一天;2)本月的最后一天加上一個月,就是下個月的最后一天。

3、last_day函數

last_day函數得到日期所屬月份最后一天的時間。

在這里插入圖片描述

4、其它的日期函數

Oracle還提供了其它的日期計算的函數,如months_between、next_day、numtodsinterval和numtoyminterval等,在我看來,這些函數很煩人,實在沒有意義,就不介紹了。

四、日期環境變量

NLS_DATE_FORMAT環境變量指定日期的輸入和輸入格式,如果字符串的格式與NLS_DATE_FORMAT指定的格式相同,Oracle可以自動轉換,不需要to_char和to_date函數。

export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"

在這里插入圖片描述

export NLS_DATE_FORMAT="yyyymmddhh24miss"

在這里插入圖片描述

從上圖的運行結果看出,修改NLS_DATE_FORMAT環境變量后,如果輸入的日期格式不符,Oracle無法識別。

五、版權聲明

C語言技術網原創文章,轉載請說明文章的來源、作者和原文的鏈接。
來源:C語言技術網(www.freecplus.net)
作者:碼農有道

如果文章有錯別字,或者內容有錯誤,或其他的建議和意見,請您留言指正,非常感謝!!!


免責聲明!

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



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