日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cursor is oracle 日期_Oracle时间计算------日期格式参数含义说明

發(fā)布時間:2023/12/19 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cursor is oracle 日期_Oracle时间计算------日期格式参数含义说明 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Oracle時間計算------日期格式參數(shù)含義說明

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?年中的第幾個星期

1.日期時間間隔操作

當前時間減去7分鐘的時間

select sysdate,sysdate - interval '7' MINUTE from dual

當前時間減去7小時的時間

select sysdate - interval '7' hour from

dual?當前時間減去7天的時間

select sysdate - interval '7' day from dual

當前時間減去7月的時間

select sysdate,sysdate - interval '7' month from dual

當前時間減去7年的時間

select sysdate,sysdate - interval '7' year from dual

時間間隔乘以一個數(shù)字

select sysdate,sysdate - 8 *interval '2' hour from dual

2.日期到字符操作

select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from

dual;

select sysdate,to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from

dual;

select sysdate,to_char(sysdate,'yyyy-ddd hh:mi:ss') from

dual;

select sysdate,to_char(sysdate,'yyyy-mm iw-dhh:mi:ss') from

dual;

3. 字符到日期操作

select to_date('2003-10-17 21:15:37','yyyy-mm-dd hh24:mi:ss') from

dual

4. trunk/ ROUND函數(shù)的使用

select trunc(sysdate ,'YEAR') from dual;

select trunc(sysdate ) from dual;

select to_char(trunc(sysdate ,'YYYY'),'YYYY') from dual;

5.oracle有毫秒級的數(shù)據(jù)類型

--返回當前時間 年月日小時分秒毫秒

select to_char(current_timestamp(5),'DD-MON-YYYY HH24:MI:SSxFF')

from dual;

--返回當前 時間的秒毫秒,可以指定秒后面的精度(最大=9)

select to_char(current_timestamp(9),'MI:SSxFF') from dual;

6.計算程序運行的時間(ms)

declare type rc is ref cursor;

l_rc rc;

l_dummy all_objects.object_name%type;

l_start number default dbms_utility.get_time;

begin for I in 1 .. 1000 loop open l_rc for 'select object_name

from all_objects '|| 'where object_id = ' || i; fetch l_rc into

l_dummy; close l_rc;

end loop;

dbms_output.put_line ( round( (dbms_utility.get_time-l_start)/100,

2 ) || ' seconds...' );

end;

以24小時的形式顯示出來要用HH24

select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from

dual;//mi是分鐘

select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from

dual;//mm會顯示月份

add_months(d,n)?日期d加n個月

last_day(d)?包含d的月?的最后一天的日期

new_time(d,a,b)?a的日期和d在b的日期和

next_day(d,day)?比日期d,由day指定的周幾的日期

sysdate?當前的系日期和

greatest(d1,d2,...dn)?出的日期列表中最后的日期

least(d1,k2,...dn)?出的日期列表中最早的日期

to_char(d

[,fmt])?日期d按fmt指定的格式??成字符串

to_date(st

[,fmt])?字符串st按fmt指定的格式?成日期,若fmt忽略,st要用缺省格式

round(d

[,fmt])?日期d按fmt指定格式舍入到最近的日期

trunc(d

[,fmt])?日期d按fmt指定格式截斷到最近的日期

to_date?字符串類型轉為換日期類型

字符串中的相應位置上的字符,必須符合時間范圍的限制

查詢Oracle日期格式

----------------------------------

select * from nls_database_parameters;

得到結果如下表: 表中NLS_DATE_FORMAT表示日期格式.

PARAMETER VALUE

-----------------------------------

-----------------------------------

NLS_LANGUAGE AMERICAN

NLS_TERRITORY AMERICA

NLS_CURRENCY $

NLS_ISO_CURRENCY AMERICA

NLS_NUMERIC_CHARACTERS .,

NLS_CHARACTERSET ZHS16GBK

NLS_CALENDAR GREGORIAN

NLS_DATE_FORMAT DD-MON-RR

NLS_DATE_LANGUAGE AMERICAN

NLS_SORT BINARY

NLS_TIME_FORMAT HH.MI.SSXFF AM

NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM

NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZH:TZM

NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZH:TZM

NLS_DUAL_CURRENCY $

NLS_COMP BINARY

NLS_NCHAR_CHARACTERSET ZHS16GBK

NLS_RDBMS_VERSION 8.1.7.0.0

或者查詢V$NLS_PARAMETERS表,

select * from V$NLS_PARAMETERS;

也有類似結果

SQL>select to_date('2004-11-12

12-07-32','yyyy-mm-dd hh24-mi-ss') value from dual;

VALUE

-------------------

2004.11.12 12:07:32

SQL>select to_date('20041015') value from

dual;

VALUE

-------------------

last_day 本月最后一天

SQL>select last_day(sysdate) value from dual;

VALUE

-------------------

2003.11.30 17:08:17

add_months(d,n) 日期d后推n個月

SQL>select add_months(sysdate,2) value from

dual;

VALUE

-------------------

2005.01.23 17:10:21

next_day(d,day) 日期d之后的第一周中,指定的那天(指定星期的第幾天)是什么日期

SQL>select next_day(sysdate,1) value from

dual;

VALUE

-------------------

2004.11.28 17:38:55

[oracle/plsql]oracle日期處理完全版

日期處理完全版

TO_DATE格式

Day:

dd number 12

dy abbreviated fri

day spelled out friday

ddspth spelled out, ordinal twelfth

Month:

mm number 03

mon abbreviated mar

month spelled out march

Year:

yy two digits 98

yyyy four digits 1998

24小時格式下時間范圍為: 0:00:00 - 23:59:59....

12小時格式下時間范圍為: 1:00:00 - 12:59:59 ....

1.日期和字符轉換函數(shù)用法(to_date,to_char)

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.兩個日期間的天數(shù)

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. 日期格式?jīng)_突問題

輸入的格式要看你安裝的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間除星期一和七的天數(shù)

在前后分別調用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

11select to_char(sysdate,'hh:mi:ss') TIME from all_objects

注意:第一條記錄的TIME 與最后一行是一樣的

可以建立一個函數(shù)來處理這個問題

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.獲得小時數(shù)

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

獲取年月日與此類似

13. 年月日的處理

select older_date, newer_date, years, months, abs( trunc(

newer_date- add_months( older_date,years*12+months ) ) ) days from

( select trunc(months_between( newer_date,

older_date )/12) YEARS, mod(trunc(months_between( newer_date,

older_date )), 12 ) MONTHS, newer_date, older_date from ( select

hiredate older_date, add_months

(hiredate,rownum)+rownum newer_date from emp ) )

14. 處理月份天數(shù)不定的辦法

select to_char(add_months(last_day(sysdate) +1, -2),

'yyyymmdd'),last_day(sysdate) from dual

15. 找出今年的天數(shù)

select add_months(trunc(sysdate,'year'), 12) -

trunc(sysdate,'year') from dual

16 閏年的處理方法

to_char( last_day( to_date('02' || :year,'mmyyyy') ), 'dd' )

如果是28就不是閏年

17. yyyy與rrrr的區(qū)別

'YYYY99 TO_C

------- ----

yyyy 99 0099

rrrr 99 1999

yyyy 01 0001

rrrr 01 2001

18.不同時區(qū)的處理

select to_char( NEW_TIME( sysdate, 'GMT','EST'), 'dd/mm/yyyy

hh:mi:ss') ,sysdate

from dual;

19. 5秒鐘一個間隔

Select TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300) * 300,'SSSSS')

,TO_CHAR(sysdate,'SSSSS') from dual

2002-11-1 9:55:00 35786

SSSSS表示5位秒數(shù)

20. 一年的第幾天

select TO_CHAR(SYSDATE,'DDD'),sysdate from dual

310 2002-11-6 10:03:51

21.計算小時,分,秒,毫秒

Select Days, A, TRUNC(A*24) Hours, TRUNC(A*24*60 - 60*TRUNC(A*24))

Minutes, TRUNC(A*24*60*60 - 60*TRUNC(A*24*60)) Seconds,

TRUNC(A*24*60*60*100 - 100*TRUNC

(A*24*60*60)) mSeconds from ( select trunc(sysdate) Days,

sysdate - trunc(sysdate) A from dual )

select * from tabname order by

decode(mode,'FIFO',1,-1)*to_char(rq,'yyyymmddhh24miss');

//

floor((date2-date1) /365) 作為年

floor((date2-date1, 365) /30) 作為月

mod(mod(date2-date1, 365), 30)作為日.

23.next_day函數(shù)

next_day(sysdate,6)是從當前開始下一個星期五。后面的數(shù)字是從星期日開始算起。

計算時間差是OracleDATA數(shù)據(jù)類型的一個常見問題。Oracle支持日期計算,你可以創(chuàng)建諸如"日期1-日期2"這樣的表達式來計算這兩個日期之間的時間差。

一旦你發(fā)現(xiàn)了時間差異,你可以使用簡單的技巧來以天、小時、分鐘或者秒為單位來計算時間差。為了得到數(shù)據(jù)差,你必須選擇合適的時間度量單位,這樣就可以進行數(shù)據(jù)格式隱藏。

使用完善復雜的轉換函數(shù)來轉換日期是一個誘惑,但是你會發(fā)現(xiàn)這不是最好的解決方法。

round(to_number(end-date-start_date))-消逝的時間(以天為單位)

round(to_number(end-date-start_date)*24)-消逝的時間(以小時為單位)

round(to_number(end-date-start_date)*1440)-消逝的時間(以分鐘為單位)

顯示時間差的默認模式是什么?為了找到這個問題的答案,讓我們進行一個簡單的SQL*Plus查詢。

SQL>selectsysdate-(sysdate-3)fromdual;

SYSDATE-(SYSDATE-3)

-------------------

3

這里,我們看到了Oracle使用天來作為消逝時間的單位,所以我們可以很容易的使用轉換函數(shù)來把它轉換成小時或者分鐘。然而,當分鐘數(shù)不是一個整數(shù)時,我們就會遇到放置小數(shù)點的問題

。

Select

(sysdate-(sysdate-3.111))*1440

from

dual;

(SYSDATE-(SYSDATE-3.111))*1440

------------------------------

4479.83333

當然,我們可以用ROUND函數(shù)(即取整函數(shù))來解決這個問題,但是要記住我們必須首先把DATE數(shù)據(jù)類型轉換成NUMBER數(shù)據(jù)類型。

Select

round(to_number(sysdate-(sysdate-3.111))*1440)

from

dual;

ROUND(TO_NUMBER(SYSDATE-(SYSDATE-3.111))*1440)

----------------------------------------------

4480

我們可以用這些函數(shù)把一個消逝時間近似轉換成分鐘并把這個值寫入Oracle表格中。在這個例子里,我們有一個離線(logoff)系統(tǒng)級觸發(fā)機制來計算已經(jīng)開始的會話時間并把它放入一個

OracleSTATSPACKUSER_LOG擴展表格之中。

Update

perfstat.stats$user_log

set

elapsed_minutes=

round(to_number(logoff_time-logon_time)*1440)

where

user=user_id

and

elapsed_minutesisNULL;

總結

以上是生活随笔為你收集整理的cursor is oracle 日期_Oracle时间计算------日期格式参数含义说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。