欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

oracle日期如何相減 oracle日期相減計算天數(shù)

oracle 時間相減函數(shù)

創(chuàng)建一個日期比較的函數(shù)(datediff,網(wǎng)上找的),然后通過該函數(shù)返回天數(shù)×8.5 就是總共的小時數(shù)了,如果要精確點的話,就把首尾天數(shù)中的時間差刨了即可。

為臨川等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及臨川網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為成都網(wǎng)站建設、網(wǎng)站建設、臨川網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

create or replace function datediff

(p_Component varchar2 ,

p_Subtranhend date,

p_Minuend date)

RETURN NUMBER

IS

/*************************************************************************/

/* 功 能:返回兩個日期之間的天、周、月、年等數(shù)量。 */

/* 入?yún)⒄f明: p_Component 時間元件,如年月日季度等等 */

/* p_Subtrahend 減數(shù)時間 */

/* p_Minuend 被減數(shù)時間 */

/*************************************************************************/

v_ReturnValue number ; -- 結果數(shù)值

v_Component varchar2(10); --日期組件中間轉換形式,截取空格并且轉為大寫

v_YearNum1 number; --減數(shù)年份數(shù)

v_YearNum2 number; --被減數(shù)年份數(shù)

v_MonthNum1 number; --減數(shù)月份數(shù)

v_MonthNum2 number; --被減數(shù)月份數(shù)

v_HourNum1 number; --減數(shù)時數(shù)

v_HourNum2 number; --被減數(shù)時數(shù)

v_MinuteNum1 number; --減數(shù)分鐘數(shù)

v_MinuteNum2 number; --被減數(shù)分鐘數(shù)

v_SecondNum1 number; --減數(shù)秒鐘數(shù)

v_SecondNum2 number; --減數(shù)秒鐘數(shù)

v_QuarterValue1 number; --減數(shù)季度數(shù)

v_QuarterValue2 number; --被減數(shù)季度數(shù)

v_WeekNum1 number; --減數(shù)與標準時間周差

v_WeekNum2 number; --被減數(shù)與標準時間周差

BEGIN

v_Component := upper(ltrim(rtrim(p_Component)));

if v_Component in ('Y','YY','YEAR','YYYY') then --年情況

v_YearNum1 := to_number(to_char(p_Subtranhend,'YYYY'));

v_YearNum2 := to_number(to_char(p_Minuend,'YYYY')) ;

v_ReturnValue := v_YearNum2 - v_YearNum1;

elsif v_Component in ('M', 'MM','MONTH', 'MON') then --月情況

--請注意,這個部分與oracle內(nèi)置日期函數(shù)MONTH_BETWEEN()不同,忽略了日因素

--而后者的兩個日期如都是所在月的最后一天,才返回整數(shù),否則,返回分數(shù)

--而且這個分數(shù)是以31天作為一個月進行計算的結果

v_YearNum1 := to_number(to_char(p_Subtranhend,'YYYY'));

v_YearNum2 := to_number(to_char(p_Minuend,'YYYY')) ;

v_MonthNum1 := to_number(to_char(p_Subtranhend,'MM'));

v_MonthNum2 := to_number(to_char(p_Minuend,'MM'));

v_ReturnValue := (v_YearNum2 - v_YearNum1)*12 + (v_MonthNum2 - v_MonthNum1);

elsif v_Component in ( 'D', 'DD', 'DAY') then --日情況

--這里與兩個日期直接相減的oracle日期算術也不同,只返回整數(shù)天數(shù);

--而后者可以返回一天的幾分之幾(以小數(shù)形式表達)

v_ReturnValue := to_date(to_char(p_Minuend,'yyyy-mm-dd'),'YYYY-MM-DD')

- to_date(to_char(p_Subtranhend,'yyyy-mm-dd'),'YYYY-MM-DD');

elsif v_Component in ('H', 'HH', 'HOUR') then --時情況

--第一步:求出天數(shù)

v_ReturnValue := (to_date(to_char(p_Minuend,'yyyy-mm-dd'),'YYYY-MM-DD')

- to_date(to_char(p_Subtranhend,'yyyy-mm-dd'), 'YYYY-MM-DD'));

--第二步:求出時數(shù)

v_HourNum1 := to_number(to_char(p_Subtranhend,'HH24'));

v_HourNum2 := to_number(to_char(p_Minuend,'HH24'));

v_ReturnValue := v_ReturnValue*24 + (v_HourNum2 - v_HourNum1);

elsif v_Component in ('MI','MINUTE') then --分情況

--第一步:求出天數(shù)

v_ReturnValue := (to_date(to_char(p_Minuend,'yyyy-mm-dd'),'YYYY-MM-DD')

- to_date(to_char(p_Subtranhend,'yyyy-mm-dd'), 'YYYY-MM-DD'));

--第二步:求出時數(shù)

v_HourNum1 := to_number(to_char(p_Subtranhend,'HH24'));

v_HourNum2 := to_number(to_char(p_Minuend,'HH24'));

v_ReturnValue := v_ReturnValue*24 + (v_HourNum2 - v_HourNum1);

--第三步:求出分鐘數(shù)

v_MinuteNum1 := to_number(to_char(p_Subtranhend,'MI'));

v_MinuteNum2 := to_number(to_char(p_Minuend,'MI'));

v_ReturnValue := v_ReturnValue*60 + (v_MinuteNum2 - v_MinuteNum1);

elsif v_Component in('S', 'SS', 'SECOND') then --秒情況

--第一步:求出天數(shù)

v_ReturnValue := (to_date(to_char(p_Minuend,'yyyy-mm-dd'),'YYYY-MM-DD')

- to_date(to_char(p_Subtranhend,'yyyy-mm-dd'),

'YYYY-MM-DD'));

--第二步:求出時數(shù)

v_HourNum1 := to_number(to_char(p_Subtranhend,'HH24'));

v_HourNum2 := to_number(to_char(p_Minuend,'HH24'));

v_ReturnValue := v_ReturnValue*24 + (v_HourNum2 - v_HourNum1);

--第三步:求出分鐘數(shù)

v_MinuteNum1 := to_number(to_char(p_Subtranhend,'MI'));

v_MinuteNum2 := to_number(to_char(p_Minuend,'MI'));

v_ReturnValue := v_ReturnValue*60 + (v_MinuteNum2 - v_MinuteNum1);

--第四步:求出秒鐘數(shù)

v_SecondNum1 := to_number(to_char(p_Subtranhend,'SS'));

v_SecondNum2 := to_number(to_char(p_Minuend,'SS'));

v_ReturnValue := v_ReturnValue*60 + (v_SecondNum2 - v_SecondNum1);

elsif v_Component in ('Q','QQ','QUARTER') then --季度情況

v_YearNum1 := to_number(to_char(p_Subtranhend,'YYYY'));

v_YearNum2 := to_number(to_char(p_Minuend,'YYYY')) ;

v_QuarterValue1 := to_number(to_char(p_Subtranhend,'Q'));

v_QuarterValue2 := to_number(to_char(p_Minuend,'Q'));

v_ReturnValue := (v_YearNum2 - v_YearNum1)*4 + (v_QuarterValue2 - v_QuarterValue1);

elsif v_Component in ('W','WW','WK','WEEK') then --周情況

--一周的起始日期應當為星期日

--關于周差的計算,嘗試采用中間日期的方法

--經(jīng)查,‘1-1-2’即公元一年1月2日為周日,我們就可以用兩個時間分別與其相減求周差

--兩個結果再相減,即可得到正確的數(shù)值

v_WeekNum1 := floor( (to_date(to_char(p_Subtranhend,'YYYY-MM-DD'),'YYYY-MM-DD') -

to_date('1-1-2','YYYY-MM-DD'))/7);

v_WeekNum2 := floor( (to_date(to_char(p_Minuend,'YYYY-MM-DD'),'YYYY-MM-DD') -

to_date('1-1-2','YYYY-MM-DD'))/7);

v_ReturnValue := v_WeekNum2 - v_WeekNum1;

else

v_ReturnValue := -88888;

end if;

RETURN v_ReturnValue;

EXCEPTION

WHEN OTHERS THEN

RETURN -99999;--例外處理

END datediff;

在Oracle中怎么求兩個時間相差的天數(shù)

可以使用sql語句,將起始時間與結束時間相減就可以了,語句如下:

select TO_NUMBER(

TO_DATE('2018-6-5','yyyy-mm-dd hh24:mi:ss')- TO_DATE('2018-5-31','yyyy-mm-dd hh24:mi:ss'))AS 相差天數(shù) from dual;

擴展資料:

注意事項:

1、在使用Oracle的to_ date函數(shù)來做日期轉換時,可能會直覺地采用"yyyy-MM-dd HH:mm:ss"的格式作為格式進行轉換,但是在Oracle中會引起錯誤:“ORA 01810格式代碼出現(xiàn)兩次”。

如: select to_ date(2005-01-01 13:14:20','yyy-MM-dd HH24:mm:ss') from dual;

原因是SQL中不區(qū)分大小寫, MM和mm被認為是相同的格式代碼,所以Oracle的SQL采用了mi代替分鐘。

select to_ date(2005-01-01 13:14:20'yyyy-MM-dd HH24:mi:s') from dual;

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

select to_ char(sysdate,'yyy-MM-dd HH24:miss') from dual;//mi是分鐘

select to_ char(sysdate,'yyy-MM-dd HH24:mm:ss') from dual://mm會顯示月份

oracle中 如何算兩個時間差?

select (to_date(to_char(sysdate,'hh24mi'),'hh24mi') - to_date('1820','hh24mi'))*1440 from dual;

兩個日期相減的結果,單位是天,因此將兩個日期相減,然后乘以1440,得到的結果就是“分鐘數(shù)”

延展閱讀:

甲骨文股份有限公司(NASDAQ:ORCL,Oracle)是全球大型數(shù)據(jù)庫軟件公司。總部位于美國加州紅木城的紅木岸(Redwood Shores),現(xiàn)時首席執(zhí)行官為公司創(chuàng)辦人勞倫斯·埃里森(Lawrence J. Ellison)。

2016年11月6日,甲骨文公司(Oracle)股東同意以 93 億美元的資金收購Netsuite公司,每股價格約為 109 美元。

Oracle WDP 全稱為Oracle Workforce Development Program,是Oracle (甲骨文)公司專門面向?qū)W生、個人、在職人員等群體開設的職業(yè)發(fā)展力課程。Oracle的技術廣泛應用于各行各業(yè),其中電信、電力、金融、政府及大量制造業(yè)都需要Oracle技術人才,Oracle公司針對職業(yè)教育市場在全球推廣的項目,其以低廉的成本給這部分人群提供Oracle技術培訓,經(jīng)過系統(tǒng)化的實訓,讓這部分人群能夠迅速掌握Oracle最新的核心技術,并能勝任企業(yè)大型數(shù)據(jù)庫管理、維護、開發(fā)工作。

oracle日期相減的問題

設需要找昨天的數(shù)據(jù),表名為 a ,日期字段為 rq

select * from a where trunc(sysdate-1)=trunc(rq)

trunc 可以拿到時間的日期部分

具體你根據(jù)你的情況完善一下。

在oracle中如何取兩個日期的天數(shù)差

首先,2個日期必須為date型數(shù)據(jù),如果是字符型必須轉成date型,然后兩個日期直接相減就可以,方法如下:

比如查今天和2018年8月20日的時間差:

select?trunc(sysdate)-to_date('2018-08-20','yyyy-mm-dd')?from?dual

select?abs(trunc(sysdate)-to_date('2018-08-20','yyyy-mm-dd'))?from?dual

里邊用到的各種函數(shù)請自行百度。

oracle中怎么得到日期相減除去周末后的天數(shù)

以2015年12月1日至2015年12月31日為例。其中周六和周日算周末。

查詢除周末以外的天數(shù)(oracle中以周日為1,周一為2……周六為7),可用如下語句:

with?t?as

(select?rownum-1?rn?from?dual?connect?by?rownum=100)

select?count(*)?from?t?

where?to_char(to_date('2015-12-01','yyyy-mm-dd')+rn,'yyyy-mm-dd')?between?'2015-12-01'?and?'2015-12-31'?

and?to_char(to_date('2015-12-01','yyyy-mm-dd')+rn,'d')?not?in?(6,7);

查詢結果:

查日歷可得,2015年12月1日至2015年12月31日期間,周六周日的天數(shù)合計8天,31-8=23,與語句所得結果一致。

名稱欄目:oracle日期如何相減 oracle日期相減計算天數(shù)
文章鏈接:http://chinadenli.net/article16/hhghgg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供服務器托管用戶體驗網(wǎng)站維護自適應網(wǎng)站網(wǎng)站策劃企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化