温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

DB2中怎么来求两个日期之间相差多少个月呢?

发布时间:2020-05-19 14:24:00 来源:网络 阅读:5746 作者:9pc9com 栏目:web开发
DB2中怎么来求两个日期之间相差多少个月呢?
今天在工作中遇到一个问题,就是怎么在DB2中怎么来求两个日期之间相差多少个月呢?
结果找到一个方法如下:
在DB2中两个日期之间相减会等到一个整数总共有六种情况分别是:
Java代码 DB2中怎么来求两个日期之间相差多少个月呢?  DB2中怎么来求两个日期之间相差多少个月呢? DB2中怎么来求两个日期之间相差多少个月呢?
  1. select date('2010-1-30')-date('2010-1-1') from RATE_INFO;  
select date('2010-1-30')-date('2010-1-1') from RATE_INFO;

查询结果是:29
29代表的意思是  29天
Java代码 DB2中怎么来求两个日期之间相差多少个月呢?  DB2中怎么来求两个日期之间相差多少个月呢? DB2中怎么来求两个日期之间相差多少个月呢?
  1. select date('2010-10-1')-date('2010-1-1') from RATE_INFO;  
select date('2010-10-1')-date('2010-1-1') from RATE_INFO;

查询结果是:900
900代表的意思是  9个月0天
Java代码 DB2中怎么来求两个日期之间相差多少个月呢?  DB2中怎么来求两个日期之间相差多少个月呢? DB2中怎么来求两个日期之间相差多少个月呢?
  1. select date('2010-12-3')-date('2010-1-1') from RATE_INFO;  
select date('2010-12-3')-date('2010-1-1') from RATE_INFO;

查询结果是:1102
1102代表的意思是  11个月2天
Java代码 DB2中怎么来求两个日期之间相差多少个月呢?  DB2中怎么来求两个日期之间相差多少个月呢? DB2中怎么来求两个日期之间相差多少个月呢?
  1. select date('2011-10-1')-date('2010-1-1') from RATE_INFO;  
select date('2011-10-1')-date('2010-1-1') from RATE_INFO;

查询结果是:10900
10900代表的意思是  1年9个月0天
Java代码 DB2中怎么来求两个日期之间相差多少个月呢?  DB2中怎么来求两个日期之间相差多少个月呢? DB2中怎么来求两个日期之间相差多少个月呢?
  1. select date('2020-10-1')-date('2010-1-1') from RATE_INFO;  
select date('2020-10-1')-date('2010-1-1') from RATE_INFO;

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

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

-- 计算两个日期之间相差多少个月,如果有零星的天数,则加上一个月
Java代码 DB2中怎么来求两个日期之间相差多少个月呢?  DB2中怎么来求两个日期之间相差多少个月呢? DB2中怎么来求两个日期之间相差多少个月呢?
  1. create function monthBetween("DAY1" varchar(10),"DAY2" varchar(10))   
  2.             Returns INTEGER   
  3.             LANGUAGE SQL   
  4.   begin ATOMIC Declare dMonth INTEGER;   
  5.             Declare date1 Date;   
  6.             Declare date2 Date;   
  7.                 Declare a INTEGER;   
  8.                 --我们这里将传入的day1,day2进行比较,将日期大的赋值给date1,反之赋值给date2   
  9.                 if day1>day2 then    
  10.                     set date1=Date(day1);   
  11.                     set date2=Date(day2);   
  12.                 else    
  13.                     set date1=Date(day2);   
  14.                     set date2=Date(day1);   
  15.                 end if;   
  16.                 set a = (date1-date2);   
  17.                 if  mod(a,100)>0 then --如果有零星天,即天数大于零则月数加上1  
  18.                     set dMonth=(date1-date2)/10000*12+ mod((a/100),100)+1;   
  19.                 else  
  20.                     set dMonth=(date1-date2)/10000*12+mod((a/100),100);   
  21.                 end if;   
  22.                 return dMonth;   
  23.   end     
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	

   
  拿出来分享一下,希望对大家有所帮助
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI