可以用下面語句來設定oracle日期的格式
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
可以查詢語句格式
select * from nls_session_parameters where parameter = 'nls_date_format';
下面首先介紹sysdate 它獲取的是伺服器端的時間,
sysdate-n 這裡的n指的是天
比如sql> select sysdate-1 from dual;
sysdate-1
-----------
2012-2-18 上
這裡sysdate-1 就是1天前的時間,如果要1小時以前的則用1/24 可以計算到查詢任何時候的。
months_between(date1,date2)
是查兩個日期間相差的月數
如sql> select months_between(sysdate,to_date('2012-01-30','yyyy-mm-dd')) from dual;
months_between(sysdate,to_date
------------------------------
0.658382243130227
它是查詢的兩個時間的月數,可以用數表示的。它是第乙個時間減去第二個時間
如果 select months_between(to_date('2012-01-30','yyyy-mm-dd'),sysdate) from dual; 時間反過來,查的則是負數的月。
next_day(date,6)
下一周的時間,這裡6,代表星期5,因為美國日期是從星期天開始的,所以1代表的是星期天,2代表星期一,以此類推。
比如 我找下乙個星期二是
sql> select next_day(sysdate,3) from dual;
next_day(sysdate,3)
-------------------
2012-2-21 上午 09:54:
如果設定了日期格式,可以直接用時間串寫
sql> select next_day('2012-2-19 8:23:12',3) from dual;
next_day('2012-2-198:23:12',3)
------------------------------
2012-2-21 上午 08:23:12
last_day 本月的最後一天
sql> select last_day(sysdate) from dual;
last_day(sysdate)
-----------------
2012-2-29 上午 09:5
它是找的本月的最後一天
sql> select last_day('2011-03-12 3:23:12') from dual;
last_day('2011-03-123:23:12')
-----------------------------
2011-3-31 上午 03:23:12
⊙ round(捨入) year,month,dd,day。
⊙ trunc(切除)
在日期處理上處理四捨五入的原則分
◎ 一半以下(含一半)舍,如月份,1,2,3,4,5,6月捨棄
◎ 一半以上入,如月份7,8,9,10,11,12入
舉例說明round
sql> select round(sysdate,'year') from dual;
round(sysdate,'year')
---------------------
2012-1-1
對年進行擷取,因為是2月份,所以捨去
sql> select round(sysdate,'month') from dual;
round(sysdate,'month')
----------------------
2012-3-1
這是對月進行擷取,因為是19號,屬於下半月,就進入下個月。
sql> select round(sysdate,'dd') from dual;
round(sysdate,'dd')
-------------------
2012-2-19
dd表示對天進行捨入,現在是早點10點,屬於上班段時間。
day是對一周的時間進行捨入,不過它是從禮拜天開始的,比如今天是禮拜日,是第一天
sql> select round(sysdate,'day') from dual;
round(sysdate,'day')
--------------------
2012-2-19
但是比如昨天是禮拜6,是最後一天,屬於後半周。就會入到下週的第一天,也就是禮拜天。s
sql> select round(to_date('2012-02-18','yyyy-mm-dd'),'day') from dual;
round(to_date('2012-02-18','yy
------------------------------
2012-2-19
再介紹一下trunc
sql> select trunc(to_date('2012-02-18','yyyy-mm-dd'),'day') from dual;
trunc(to_date('2012-02-18','yy
------------------------------
2012-2-12
2月18號是星期六,它就會擷取到星期一,所以查出來的是2月12號
年月日就不舉例說明,
再介紹兩個oracle內建函式
numtoyminterval(1,'month') month 可以換成year,
numtodsinterval(1,'day') day,hour,minute,second
這兩個函式的意思是加上你所要的時間,前面乙個數量,後面乙個是單位。
舉個例子,比如說當前時間的2天以後,可以用下列語句
sql> select sysdate + numtodsinterval(2,'day') from dual;
sysdate+numtodsinterval(2,'day
------------------------------
2012-2-21 上午 10:33:13
其它都是同樣的。
但是在numtoyminterval(1,'month') 這個和add_months 有點區別,比如今天事2月29號,這個月的最後一天,那麼再加乙個月是3月31號,還是2月29號呢,通過實驗來說明
sql> select add_months(to_date('2012-2-29','yyyy-mm-dd'),1) from dual;
add_months(to_date('2012-2-29'
------------------------------
2012-3-31
add_months 是加乙個月,這個月的月末到下個月的月末,我們再來看numtoyminterval
sql> select to_date('2012-2-29','yyyy-mm-dd')+numtoyminterval(1,'month') from dual;
to_date('2012-2-29','yyyy-mm-d
------------------------------
2012-3-29
它就加到了3月29,這就是它們兩個的區別。
作者 elsearch
ORACLE 日期函式
1.select to char to date 2011 5 1 yyyy mm dd day from dual 返回星期日 select to char to date 2011 5 1 yyyy mm dd day nls date language american from dual 返...
oracle日期函式
說明 用於從乙個日期值增加或減少一些月份 d代表乙個日期 n為正數則代表在d日期 上增加n 月份,n 為負數則代表在 d日期上減少n月 例 select add months sysdate,12 next year from dual 2 current date 說明 返回當前會話時區中的當前日...
oracle日期函式
oracle取上週一到週末日期的查詢語句 oracle 取上週一到週末的sql 這樣取的是 在一周內第幾天,是以週日為開始的 selectto char to date 20130906 yyyymmdd d fromdual 結果 6 注釋 2013.09.06是周五,為本週的第六天 select...