今日(2011-12-27)一哥们(Oracle 10.2.0)碰到一Oracle间隔日期计算问题,原意是给出两个日期,获取两个日期之间的间隔数值,返回形如格式:x年x月x日,类似倒计时工具计时器。这里权当作个记录,当时使用到了Oracle 数据类型interval来做处理,因为参数传递的问题,没有奏效,最后使用内置函数解决,这里仅此作个记录,下次留用。主要是要考虑到闰年、闰月、每个月的不同天数问题。,贴出函数脚本
create or replace function fn_interval_ymd(d2 date,d1 date) return varchar2
is
year_ number;
month_ number;
day_ number;
temp_date date;
date2 date:=d2;
date1 date:=d1;
begin
if date1-date2>0 then
temp_date:=date2;
date2:=date1;
date1:=temp_date;
end if;
year_ :=floor(months_between(date2,date1)/12);
month_:=floor(months_between(date2,(date1+NUMTOYMINTERVAL(year_, 'year'))));
day_ :=date2-((date1+NUMTOYMINTERVAL(year_, 'year'))+NUMTOYMINTERVAL(month_, 'month'));
return lpad(year_,4,'0')||'年'||lpad(month_,2,'0')||'月'||lpad(day_,2,'0')||'日';
exception
when others then
dbms_output.put_line('Input date format exception!');
return '';
end;
测试效果:
select fn_interval_ymd(sysdate,sysdate-1000) from dual;
----------
0002年08月26日
----------
select fn_interval_ymd(to_date('2008-05-01','yyyy-mm-dd'),
to_date('2006-04-21','yyyy-mm-dd')) from dual;
0002年00月10日
----------
select fn_interval_ymd(to_date('2008-02-11','yyyy-mm-dd'),
to_date('2008-03-05','yyyy-mm-dd')) from dual;
----------
0000年00月23日
健壮性效果不知道到底如何,还要进一步测试。
分享到:
相关推荐
2. **指定日期加长**: - 如果要在一个日期基础上增加特定天数,可以先将天数转换为秒(如:5天即为5*86400秒),然后将这个秒数加到原始的日期时间戳上。 - 使用“加法”运算符(+)将这个增量应用到原始时间戳上...
计算指定间隔的Excel日期.rar,Excel的日期是数字的一种特殊显示格式,因此用户能够以天为单位对日期值进行加减运算,并设置单元格格式为所需日期格式。本例内容包括:1、计算指定间隔后的日期;2、闰年判断。
在Access数据库中,日期间隔查询是一项重要的功能,它允许用户基于日期字段进行复杂的筛选和分析。日期间隔查询常用于统计特定时间段内的数据,比如计算过去一年的销售额、查找某个日期范围内的记录,或者分析周期性...
在上述代码中,工具类包含获取指定日期前一天和后一天的方法,这在需要计算相邻日期的场景下非常有用。 6. **异常处理** 在涉及到日期转换的方法中,由于`SimpleDateFormat.parse()`可能会抛出`ParseException`,...
在C#编程中,日期间隔计算是一项常见的任务,特别是在处理时间相关的业务逻辑时。这个标题“C#日期间隔计算,能计算年,月,天”指的是如何在C#中计算两个日期之间的差值,包括年、月和天数。描述进一步提到了能够...
C#计算两个日期间隔的年月日,精确到天,无视闰年等。 /// /// 计算两个日期间隔的年月日 /// /// <param name="MinDate"></param> /// <param name="MaxDate"></param> /// <returns></returns> public ...
### 批量删除指定日期的文件 在日常的计算机维护工作中,经常需要清理大量的旧文件以释放磁盘空间或保持系统的整洁。对于Windows系统来说,批量删除特定日期之前的文件是一项非常实用的功能。本文将详细介绍如何在...
这个场景中提到的“C# Winform获取两个时间的间隔”是一个常见的需求,特别是在数据处理和日志记录等应用中。我们将详细探讨如何实现这一功能,以及如何结合其他操作,如Excel表格的读取和注册表的操作。 首先,让...
易语言Access日期间隔查询是一种在数据库管理中常见的操作,它涉及到数据库编程和SQL查询技术。易语言是中国本土的一种编程语言,其设计目标是使编程变得简单、直观,适合初学者和专业开发者。在这个主题中,我们将...
// 指定日期 ``` 接着,要计算两个日期之间的差异,我们可以用`getTime()`方法获取每个日期的毫秒值,然后相减得到两个日期之间的间隔(以毫秒为单位): ```javascript var differenceInMilliseconds = date2....
- **`MINUTE`**:获取指定日期的时间分钟数。 ```sql VALUES MINUTE(CURRENT_TIMESTAMP); ``` - **`SECOND`**:获取指定日期的时间秒数。 ```sql VALUES SECOND(CURRENT_TIMESTAMP); ``` #### 三、计算最近...
Java获取指定开始时间与结束时间之间的所有日期是Java开发中的一种常见需求,通常用于生成报告、统计数据、日志记录等场景中。今天,我们将详细介绍如何使用Java获取指定开始时间与结束时间之间的所有日期。 Java...
使用C++语言编辑,可以查询任意日期之间的间隔天数.在windows\linux环境下均可运行的程序。
"指定日期算秒"这个主题涉及到的是如何在编程中处理日期和时间的差值,以及考虑到闰年和平年的差异。下面我们将深入探讨相关的知识点。 首先,我们需要了解日期时间的基本概念。日期通常表示为年、月、日,时间则用...
在Access数据库中,日期间隔查询是一项常见的操作,它涉及到如何从日期字段中筛选出满足特定时间范围的数据。Access,作为Microsoft Office套件的一部分,提供了一个直观的用户界面和SQL语言支持,使得这样的查询变...
### Oracle日期时间数据类型与时间间隔数据类型详解 #### 23.1 概述:Oracle中的日期时间数据类型 在Oracle数据库中,日期时间数据类型主要包括`DATE`、`TIMESTAMP`及其变体(如`TIMESTAMP WITH TIME ZONE`、`...
在JavaScript中,获取两个日期之间的天数差是一个常见的任务,特别是在处理时间和日期相关的应用程序中。这篇博客“JS获得两个时间间隔天数”提供了一个实用的方法来解决这个问题。在这个方法中,我们将探讨如何利用...
在“易语言源码Access日期间隔查询.rar”这个压缩包中,我们可以推测它包含了一个使用易语言编写的程序,该程序主要用于在Microsoft Access数据库中进行日期间隔查询。 Access是一款关系型数据库管理系统,由微软...
在.NET框架中,获取日期和时间的信息是进行各种应用程序开发时不可或缺的一部分。本文将深入探讨在.NET中获取日期的各种方法,这些方法不仅适用于日常的业务逻辑处理,也对那些需要精确时间戳或特定日期格式的场景...
在SQL中,我们可以使用BETWEEN运算符来指定日期范围,例如`BETWEEN #开始日期# AND #结束日期#`。 在易语言中,我们可以创建一个用户界面,让用户输入开始和结束日期,然后将这些日期值插入到SQL查询语句中。在获取...