`
xiaoh08
  • 浏览: 12366 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

DB2中求两个日期之间相差多少个月?

    博客分类:
  • DB2
阅读更多

DB2中怎么来求两个日期之间相差多少个月呢?
今天在工作中遇到一个问题,就是怎么在DB2中怎么来求两个日期之间相差多少个月呢?
结果找到一个方法如下:
在DB2中两个日期之间相减会等到一个整数总共有六种情况分别是:

select date('2010-1-30')-date('2010-1-1') from RATE_INFO;


查询结果是:29
29代表的意思是  29天

select date('2010-10-1')-date('2010-1-1') from RATE_INFO;


查询结果是:900
900代表的意思是  9个月0天

select date('2010-12-3')-date('2010-1-1') from RATE_INFO;


查询结果是:1102
1102代表的意思是  11个月2天

select date('2011-10-1')-date('2010-1-1') from RATE_INFO;


查询结果是:10900
10900代表的意思是  1年9个月0天

select date('2020-10-1')-date('2010-1-1') from RATE_INFO;


查询结果是:100900
100900代表的意思是  10年9个月0天
总结起来是: 个位、十位用来表示相差多少天
             百位、千位用来表示相差多少月
             万位、十万位用来表示相差多少年

我自己写了一个函数用来计算两个日期之间相差多少个月

-- 计算两个日期之间相差多少个月,如果有零星的天数,则加上一个月

create function monthBetween("DAY1" varchar(10),"DAY2" varchar(10))
			Returns INTEGER
		 	LANGUAGE SQL
  begin ATOMIC Declare dMonth INTEGER;
  			Declare date1 Date;
  			Declare date2 Date;
				Declare a INTEGER;
				--我们这里将传入的day1,day2进行比较,将日期大的赋值给date1,反之赋值给date2
				if day1>day2 then 
					set date1=Date(day1);
					set date2=Date(day2);
				else 
					set date1=Date(day2);
					set date2=Date(day1);
				end if;
				set a = (date1-date2);
				if  mod(a,100)>0 then --如果有零星天,即天数大于零则月数加上1
					set dMonth=(date1-date2)/10000*12+ mod((a/100),100)+1;
				else
					set dMonth=(date1-date2)/10000*12+mod((a/100),100);
				end if;
				return dMonth;
  end	


   
  拿出来分享一下,希望对大家有所帮助

 

分享到:
评论
1 楼 飞哥不过年 2014-01-02  
不错,db2用起来还是不顺手

相关推荐

    DB2 计算相差天数(时间)

    DB2 计算相差天数(时间),打个比方你要计算2013-10-20到2014-03-01的天数

    sql确定两个日期之间的月份数或年数

    通过上述不同数据库系统中的示例可以看出,虽然不同的数据库提供了不同的内置函数来简化计算过程,但其核心思想都是相同的:即先找到两个日期,然后根据这两个日期计算出它们之间的年数和月数差异。在实际应用中,...

    计算2个日期相差天数、去除节假日周末

    在编程领域,尤其是在数据分析、日程管理或者时间序列分析中,计算两个日期之间的差异并考虑工作日排除节假日和周末是一项常见的任务。C++作为一种强大的系统级编程语言,提供了丰富的库来处理日期和时间操作。本篇...

    DB2-date-function.rar_db2 date functi

    7. **TIMESTAMPDIFF()**: 此函数用于计算两个日期时间值之间的差值,可以以秒、分钟、小时、天、月或年为单位。例如,`TIMESTAMPDIFF(DAY, date1, date2)`返回date1和date2之间相差的天数。 8. **TO_CHAR()** 和 **...

    db2使用技巧

    使用以下语句可以计算两个日期的相差天数: days(date('2007-03-01'))-days(date('2007-02-28')) 十三、为一个用户访问另一个实例创建表映射 使用以下语句可以为一个用户访问另一个实例创建表映射: create alias ...

    DB2手册pdf

    在DB2中,可以使用`DATEDIFF`函数来计算两个日期之间的差异。例如: ```sql SELECT DATEDIFF(day, '2023-01-01', '2023-01-10') AS days_diff; ``` #### 写UDF的例子 **用户定义函数 (UDF)** 允许开发者扩展DB2的...

    DB2学习手册

    7. **类似DATEDIFF计算两个日期的相差天数:** 使用`JULIANDAY`函数配合减法运算来计算两个日期之间的天数差。 8. **写UDF的例子:** 用户定义函数(UDF)可以扩展DB2的功能。例如,定义一个返回字符串长度的函数。 9. *...

    DB2使用经验积累及心得

    - **类似DATEDIF计算两个日期的相差天数**:利用`EXTRACT(DAY FROM (日期1 - 日期2))`。 - **写UDF的例子**:用户定义函数(UDF)可以扩展DB2的功能,例如定义一个计算平方的函数。 - **创建含IDENTITY值(即自动生成...

    牛新庄:DB2使用经验

    - **类似DATEDIF计算两个日期的相差天数**:使用`EXTRACT`函数与日期操作相结合,例如: ```sql EXTRACT(DAY FROM (date2 - date1)) ``` - **写UDF的例子**:用户定义函数(UDF)可以扩展DB2的功能。例如,创建...

    db2开发经验

    10. **类似DATEDIF计算两个日期的相差天数:** 使用`JULIANDAY`函数结合`ABS`函数可以计算两个日期之间的天数差。 11. **写UDF的例子:** 用户定义函数(UDF)可以扩展DB2的功能。例如,可以编写一个UDF来计算字符串的...

    程序员的SQL金典.rar

     5.1.14 求两个变量的反正切  5.1.15 求余切  5.1.16 求圆周率π值  5.1.17 弧度制转换为角度制  5.1.18 角度制转换为弧度制  5.1.19 求符号  5.1.20 求整除余数  5.1.21 求自然对数  5.1.22 求以10为底的...

    DB2编程序技巧 (一)

    - **用户定义函数 (UDF)**:UDF 可以用来扩展DB2的功能,例如编写一个返回两个日期之间的天数差异的函数。 **1.9 创建含 IDENTITY 值的表** - **IDENTITY 属性**:在创建表时可以为某列指定`GENERATED ALWAYS AS ...

Global site tag (gtag.js) - Google Analytics