oracle 日期加减(Oracle中有没有计算两个日期之间差值的函数)

:暂无数据 2026-09-18 06:20:06 :3

oracle 日期加减(Oracle中有没有计算两个日期之间差值的函数)

大家好,关于oracle 日期加减很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于Oracle中有没有计算两个日期之间差值的函数的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

本文目录

Oracle中有没有计算两个日期之间差值的函数

--专门的函数是没有的,但是日期是可以加减法的:
--这是计算这两个日期之间的天数:
SELECT TRUNC(TO_DATE( ’2011-03-01 ’, ’YYYY-MM-DD ’)-TO_DATE( ’2011-01-01 ’, ’YYYY-MM-DD ’)) FROM DUAL;
SELECT TRUNC(sysdate,’dd’)-trunc(sysdate+1,’dd’) FROM DUAL;

oracle 时间相减函数

创建一个日期比较的函数(datediff,网上找的),然后通过该函数返回天数×8.5 就是总共的小时数了,如果要精确点的话,就把首尾天数中的时间差刨了即可。
create or replace function datediff
(p_Component varchar2 ,
p_Subtranhend date,
p_Minuend date)
RETURN NUMBER
IS
/*************************************************************************/
/* 功 能:返回两个日期之间的天、周、月、年等数量。 */
/* 入参说明: p_Component 时间元件,如年月日季度等等 */
/* p_Subtrahend 减数时间 */
/* p_Minuend 被减数时间 */
/*************************************************************************/
v_ReturnValue number ; -- 结果数值
v_Component varchar2(10); --日期组件中间转换形式,截取空格并且转为大写
v_YearNum1 number; --减数年份数
v_YearNum2 number; --被减数年份数
v_MonthNum1 number; --减数月份数
v_MonthNum2 number; --被减数月份数
v_HourNum1 number; --减数时数
v_HourNum2 number; --被减数时数
v_MinuteNum1 number; --减数分钟数
v_MinuteNum2 number; --被减数分钟数
v_SecondNum1 number; --减数秒钟数
v_SecondNum2 number; --减数秒钟数
v_QuarterValue1 number; --减数季度数
v_QuarterValue2 number; --被减数季度数
v_WeekNum1 number; --减数与标准时间周差
v_WeekNum2 number; --被减数与标准时间周差
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内置日期函数MONTH_BETWEEN()不同,忽略了日因素
--而后者的两个日期如都是所在月的最后一天,才返回整数,否则,返回分数
--而且这个分数是以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日期算术也不同,只返回整数天数;
--而后者可以返回一天的几分之几(以小数形式表达)
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 --时情况
--第一步:求出天数
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’));
--第二步:求出时数
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 --分情况
--第一步:求出天数
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’));
--第二步:求出时数
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);
--第三步:求出分钟数
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 --秒情况
--第一步:求出天数
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’));
--第二步:求出时数
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);
--第三步:求出分钟数
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);
--第四步:求出秒钟数
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 --周情况
--一周的起始日期应当为星期日
--关于周差的计算,尝试采用中间日期的方法
--经查,‘1-1-2’即公元一年1月2日为周日,我们就可以用两个时间分别与其相减求周差
--两个结果再相减,即可得到正确的数值
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怎么将当前时间减一年

需要当前时间减去365天,以下是步骤:

oracle 两个时间相减默认的是天数

oracle两个时间相减默认的是天数*24为相差的小时数

oracle两个时间相减默认的是天数*24*60为相差的分钟数

oracle两个时间相减默认的是天数*24*60*60为相差的秒数

--MONTHS_BETWEEN(date2,date1) 

给出date2-date1的月份 

SQL》selectmonths_between(’19-12月-1999’,’19-3月-1999’)mon_betweenfromdual; 

MON_BETWEEN 
----------- 

9 

SQL》select 

months_between(to_date(’2000.05.20’,’yyyy.mm.dd’),to_date(’2005.05.20’,’yyyy.dd’)) 

mon_betwfromdual; 

MON_BETW 

--------- 

-60 

Oracle计算时间差表达式 

--获取两时间的相差豪秒数 
selectceil((To_date(’2008-05-0200:00:00’,’yyyy-mm-ddhh34-mi-ss’)-To_date(’2008-04-

3023:59:59’,’yyyy-mm-ddhh34-mi-ss’))*24*60*60*1000)相差豪秒数FROMDUAL; 

/*

Oracle数据库如何增加或减少日期值的天数

sysdate是日期型的,日期型可以直接加减天数得到新的日期, 如 sysdate+1,sysdate-1,当天是本月第一天的时候你减一就是上月最后一天,你不要担心ORACLE会给你减出个非法日期,当然你使用中转其他类型时最好加上括号如(sysdade-1)防止运算顺序错误造成意外的结果。

oracle 时间加减

1、测试数据库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

返回结果30

关于oracle 日期加减,Oracle中有没有计算两个日期之间差值的函数的介绍到此结束,希望对大家有所帮助。

oracle 日期加减(Oracle中有没有计算两个日期之间差值的函数)

本文编辑:admin

本文相关文章:


excel常用函数公式表乘法(在excel中的乘法函数是哪个)

excel常用函数公式表乘法(在excel中的乘法函数是哪个)

本篇文章给大家谈谈excel常用函数公式表乘法,以及在excel中的乘法函数是哪个对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月10日 06:00

open函数(Excel 请问open函数的语法)

open函数(Excel 请问open函数的语法)

今天给各位分享Excel 请问open函数的语法的知识,其中也会对Excel 请问open函数的语法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月2日 15:00

scanf函数怎么解除(C语言scanf函数的停止)

scanf函数怎么解除(C语言scanf函数的停止)

其实scanf函数怎么解除的问题并不复杂,但是又很多的朋友都不太了解C语言scanf函数的停止,因此呢,今天小编就来为大家分享scanf函数怎么解除的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年9月30日 19:20

placeholder函数(angular2失去焦点函数怎么写)

placeholder函数(angular2失去焦点函数怎么写)

大家好,如果您还对placeholder函数不太了解,没有关系,今天就由本站为大家分享placeholder函数的知识,包括angular2失去焦点函数怎么写的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年9月25日 11:20

rank函数怎么用不重复(怎样使Excel函数RANK排列不出现重号)

rank函数怎么用不重复(怎样使Excel函数RANK排列不出现重号)

本篇文章给大家谈谈rank函数怎么用不重复,以及怎样使Excel函数RANK排列不出现重号对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月24日 06:20

函数指针怎么使用(c语言 指针作为函数变量怎么用)

函数指针怎么使用(c语言 指针作为函数变量怎么用)

各位老铁们好,相信很多人对函数指针怎么使用都不是特别的了解,因此呢,今天就来为大家分享下关于函数指针怎么使用以及c语言 指针作为函数变量怎么用的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年9月15日 09:40

timestamp without time zone(Postgresql中to_date()函数使用问题)

timestamp without time zone(Postgresql中to_date()函数使用问题)

各位老铁们好,相信很多人对timestamp without time zone都不是特别的了解,因此呢,今天就来为大家分享下关于timestamp without time zone以及Postgresql中to_date()函数使用问题

2026年9月7日 09:40

matlab中fplot函数(matlab二维平面绘图函数plot和fplot的区别,举例说明)

matlab中fplot函数(matlab二维平面绘图函数plot和fplot的区别,举例说明)

今天给各位分享matlab二维平面绘图函数plot和fplot的区别,举例说明的知识,其中也会对matlab二维平面绘图函数plot和fplot的区别,举例说明进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年8月30日 15:20

releasesemaphore参数(请问用C语言在windows上建立多线程需要用什么函数最好,)

releasesemaphore参数(请问用C语言在windows上建立多线程需要用什么函数最好,)

本篇文章给大家谈谈releasesemaphore参数,以及请问用C语言在windows上建立多线程需要用什么函数最好,对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,

2026年8月30日 07:30

mysql自定义聚合函数(MySQL函数的聚合函数)

mysql自定义聚合函数(MySQL函数的聚合函数)

其实mysql自定义聚合函数的问题并不复杂,但是又很多的朋友都不太了解MySQL函数的聚合函数,因此呢,今天小编就来为大家分享mysql自定义聚合函数的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年8月16日 02:30

更多文章:


各种花边图案(花边怎么画 简单易学的花边绘画教程)

各种花边图案(花边怎么画 简单易学的花边绘画教程)

各位老铁们,大家好,今天由我来为大家分享各种花边图案,以及花边怎么画 简单易学的花边绘画教程的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年10月13日 19:10

stewardess读音(空姐的英文读音)

stewardess读音(空姐的英文读音)

本篇文章给大家谈谈stewardess读音,以及空姐的英文读音对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年10月13日 19:00

前端面试必背十个点(资深HR揭秘:Web前端面试技巧有哪些)

前端面试必背十个点(资深HR揭秘:Web前端面试技巧有哪些)

“前端面试必背十个点”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看前端面试必背十个点(资深HR揭秘:Web前端面试技巧有哪些)!

2026年10月13日 17:50

sqlplus重置用户名密码(Oracle中的plus的用户名和密码忘了怎么办)

sqlplus重置用户名密码(Oracle中的plus的用户名和密码忘了怎么办)

大家好,关于sqlplus重置用户名密码很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于Oracle中的plus的用户名和密码忘了怎么办的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站

2026年10月13日 17:40

echarts怎么读英语(echarts怎么设置数据自动排序)

echarts怎么读英语(echarts怎么设置数据自动排序)

本篇文章给大家谈谈echarts怎么读英语,以及echarts怎么设置数据自动排序对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年10月13日 17:10

叩丁狼前端培训怎么样(H5前端自学了一段时间有一些基础,接下来想学深一点去叩丁狼培训怎么样)

叩丁狼前端培训怎么样(H5前端自学了一段时间有一些基础,接下来想学深一点去叩丁狼培训怎么样)

各位老铁们好,相信很多人对叩丁狼前端培训怎么样都不是特别的了解,因此呢,今天就来为大家分享下关于叩丁狼前端培训怎么样以及H5前端自学了一段时间有一些基础,接下来想学深一点去叩丁狼培训怎么样的问题知识,还望可以帮助大家,解决大家的一些困惑,下

2026年10月13日 16:40

pascal letoublon(求friendsships-pascal mp3下载)

pascal letoublon(求friendsships-pascal mp3下载)

各位老铁们,大家好,今天由我来为大家分享pascal letoublon,以及求friendsships-pascal mp3下载的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家

2026年10月13日 15:50

convert的名词(shift和convert区别)

convert的名词(shift和convert区别)

大家好,今天小编来为大家解答以下的问题,关于convert的名词,shift和convert区别这个很多人还不知道,现在让我们一起来看看吧!

2026年10月13日 14:40

免费photoshop 中文版下载(哪里可以下载免费的ps软件)

免费photoshop 中文版下载(哪里可以下载免费的ps软件)

这篇文章给大家聊聊关于免费photoshop 中文版下载,以及哪里可以下载免费的ps软件对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月13日 13:00

centos7退出命令(centos7 如何退出if show)

centos7退出命令(centos7 如何退出if show)

大家好,如果您还对centos7退出命令不太了解,没有关系,今天就由本站为大家分享centos7退出命令的知识,包括centos7 如何退出if show的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月13日 12:10

最近更新

漯河网站超市建设,到底如何收费?
2026-10-13 22:49:20 浏览:0
广东建设工程质量网站如何使用?
2026-10-13 22:45:14 浏览:0
高埗3d打印网站建设费用大概多少
2026-10-13 22:44:20 浏览:0
热门文章

sql server2008下载地址(如何下载SQL Server 2008 R2 SP2免费版)
2026-10-05 05:30:29 浏览:6
thinkpadx100eu盘启动(thinkpad x100e U盘启动 支持的写入方式是什么)
2026-09-01 14:20:01 浏览:6
标签列表