oracle日期時間函式大全(一)
2010-05-11 13:35
select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual//
2. select to_char( to_date(222,'j'),'jsp') from dual
顯示two hundred twenty-two
3.求某天是星期幾
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;
星期一
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','nls_date_language = american') from dual;
monday
設定日期語言
alter session set nls_date_language='american';
也可以這樣
to_date ('2002-08-26', 'yyyy-mm-dd', 'nls_date_language = american')
4. 兩個日期間的天數
select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;
5. 時間為null的用法
select id, active_date from table1
union
select 1, to_date(null) from dual;
注意要用to_date(null)
6.月份差
a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')
那麼12月31號中午12點之後和12月1號的12點之前是不包含在這個範圍之內的。
所以,當時間需要精確的時候,覺得to_char還是必要的
7. 日期格式衝突問題
輸入的格式要看你安裝的oracle字符集的型別, 比如: us7ascii, date格式的型別就是: '01-jan-01'
alter system set nls_date_language = american
alter session set nls_date_language = american
或者在to_date中寫
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','nls_date_language = american') from dual;
注意我這只是舉了nls_date_language,當然還有很多,
可檢視
select * from nls_session_parameters
select * from v$nls_parameters
8. select count(*)
from ( select rownum-1 rnum
from all_objects
where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-
02-01','yyyy-mm-dd')+1
) where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'd' )
not in ( '1', '7' )
查詢2002-02-28至2002-02-01間除星期一和七的天數
在前後分別呼叫dbms_utility.get_time, 讓後將結果相減(得到的是1/100秒, 而不是毫秒).
9. 查詢月份
select months_between(to_date('01-31-1999','mm-dd-yyyy'),to_date('12-31-1998','mm-dd-yyyy')) "months" from dual;
1 select months_between(to_date('02-01-1999','mm-dd-yyyy'),to_date('12-31-1998','mm-dd-yyyy')) "months" from dual;
1.03225806451613
10. next_day的用法
next_day(date, day)
monday-sunday, for format code day
mon-sun, for format code dy
1-7, for format code d
11 select to_char(sysdate,'hh:mi:ss') time from all_objects
注意:第一條記錄的time 與最後一行是一樣的
可以建立乙個函式來處理這個問題
create or replace function sys_date return date is
begin
return sysdate;
end;
select to_char(sys_date,'hh:mi:ss') from all_objects;
12.獲得小時數
extract()找出日期或間隔值的字段值
select extract(hour from timestamp '2001-02-16 2:38:40') from offer
sql> select sysdate ,to_char(sysdate,'hh') from dual;
sysdate to_char(sysdate,'hh')
-------------------- ---------------------
2003-10-13 19:35:21 07
sql> select sysdate ,to_char(sysdate,'hh24') from dual;
sysdate to_char(sysdate,'hh24')
-------------------- -----------------------
2003-10-13 19:35:21 19
oracle 日期時間函式例項大全
一些常用 oracle 的日期時間函式,分享給大家。一 常用日期資料格式 1.獲取年的最後一位,兩位,三位,四位 select to char sysdate,y from dual 獲取年的最後一位 select to char sysdate,yy from dual 獲取年的最後兩位 sele...
MySQL日期時間函式大全
mysql日期格式化 format 取值範圍。值含義 秒 s s 兩位數字形式的秒 00,01,59 分 i i 兩位數字形式的分 00,01,59 小時 h 24小時制,兩位數形式小時 00,01,23 h12小時制,兩位數形式小時 00,01,12 k24小時制,數形式小時 0,1,23 l12...
MySQL日期時間函式大全
對於每個型別擁有的值範圍以及並且指定日期何時間值的有效格式的描述見7.3.6 日期和時間型別。這裡是乙個使用日期函式的例子。下面的查詢選擇了所有記錄,其date col的值是在最後30天以內 mysql select something from table where to days now to...