具體操作步驟如下:
成都創(chuàng)新互聯(lián)公司專注于三水網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供三水營銷型網(wǎng)站建設(shè),三水網(wǎng)站制作、三水網(wǎng)頁設(shè)計、三水網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造三水網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供三水網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
1、首先,打開sql,連接到oracle數(shù)據(jù)庫,使用sql語句創(chuàng)建測試表,如下圖所示,然后進(jìn)入下一步。
? ?
2、其次,使用sql語句將3行測試數(shù)據(jù)插入上一步創(chuàng)建的測試表中。使用當(dāng)前系統(tǒng)時間插入日期字段,如下圖所示,然后進(jìn)入下一步。
? ?
3、接著,完成上述步驟后,單擊左上角箭頭所指“提交”按鈕以將更改提交到數(shù)據(jù)庫以保存,如下圖所示,然后進(jìn)入下一步。
? ?
4、然后,完成上述步驟后,查詢剛剛插入的數(shù)據(jù),如下圖所示,然后進(jìn)入下一步。
? ?
5、隨后,修改第一行中“
Updatedate”字段的值。這時,直接拼接的日期格式的字符串已更新,并且Oracle無法執(zhí)行,如下圖所示,然后進(jìn)入下一步。
?
6、接著,修改第一行中“
Updatedate”字段的值,將字符串的版本日期轉(zhuǎn)換為日期類型的權(quán)重類型,然后稍后對其進(jìn)行修改以進(jìn)行更新,如下圖所示,然后進(jìn)入下一步。
? ?
7、最后,修改第一行中Updatedate字段的值,使用當(dāng)前日期減去一年就可以了,如下圖所示。這樣,問題就解決了。
? ?
select (to_date(to_char(sysdate,'hh24mi'),'hh24mi') - to_date('1820','hh24mi'))*1440 from dual;
兩個日期相減的結(jié)果,單位是天,因此將兩個日期相減,然后乘以1440,得到的結(jié)果就是“分鐘數(shù)”
延展閱讀:
甲骨文股份有限公司(NASDAQ:ORCL,Oracle)是全球大型數(shù)據(jù)庫軟件公司??偛课挥诿绹又菁t木城的紅木岸(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生、個人、在職人員等群體開設(shè)的職業(yè)發(fā)展力課程。Oracle的技術(shù)廣泛應(yīng)用于各行各業(yè),其中電信、電力、金融、政府及大量制造業(yè)都需要Oracle技術(shù)人才,Oracle公司針對職業(yè)教育市場在全球推廣的項目,其以低廉的成本給這部分人群提供Oracle技術(shù)培訓(xùn),經(jīng)過系統(tǒng)化的實訓(xùn),讓這部分人群能夠迅速掌握Oracle最新的核心技術(shù),并能勝任企業(yè)大型數(shù)據(jù)庫管理、維護(hù)、開發(fā)工作。
vs_time := to_char(date'2007-1-1' + end_date - begin_date, 'hh24:mi:ss') ;
vs_time需要是一個varchar2類型。
我測試通過了,你try一下。
這個“date'2007-1-1'”,其實你使用任何一天都可以——因為不care日期只關(guān)心時分秒。
1、測試數(shù)據(jù)庫Oracle10G。
2、工具PLSQL?Developer。
3、測試語句。
select?to_date('2010/10/10?10:10:10',?'YYYY/MM/DD?HH24:MI:SS')?-
to_date('2010/09/10?10:10:10',?'YYYY/MM/DD?HH24:MI:SS')?from?dual
返回結(jié)果30
兩個date 型可以直接相減,值的單位是天,如果不是date型 先用to_date()處理再相減。
得出年數(shù) : round(減后的值/365)
得出剩余月數(shù): round(mod(減后的值,365)/30)
創(chuàng)建一個日期比較的函數(shù)(datediff,網(wǎng)上找的),然后通過該函數(shù)返回天數(shù)×8.5 就是總共的小時數(shù)了,如果要精確點的話,就把首尾天數(shù)中的時間差刨了即可。
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 ; -- 結(jié)果數(shù)值
v_Component varchar2(10); --日期組件中間轉(zhuǎn)換形式,截取空格并且轉(zhuǎn)為大寫
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ù)與標(biāo)準(zhǔn)時間周差
v_WeekNum2 number; --被減數(shù)與標(biāo)準(zhǔn)時間周差
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ù),否則,返回分?jǐn)?shù)
--而且這個分?jǐn)?shù)是以31天作為一個月進(jìn)行計算的結(jié)果
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ù);
--而后者可以返回一天的幾分之幾(以小數(shù)形式表達(dá))
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 --周情況
--一周的起始日期應(yīng)當(dāng)為星期日
--關(guān)于周差的計算,嘗試采用中間日期的方法
--經(jīng)查,‘1-1-2’即公元一年1月2日為周日,我們就可以用兩個時間分別與其相減求周差
--兩個結(jié)果再相減,即可得到正確的數(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時間如何相減,oracle日期相減計算天數(shù)
分享地址:http://sd-ha.com/article44/hcoehe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、營銷型網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)