热门IT资讯网

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

发表于:2024-11-29 作者:热门IT资讯网编辑
编辑最后更新 2024年11月29日,DB2中怎么来求两个日期之间相差多少个月呢?今天在工作中遇到一个问题,就是怎么在DB2中怎么来求两个日期之间相差多少个月呢?结果找到一个方法如下:在DB2中两个日期之间相减会等到一个整数总共有六种情况
DB2中怎么来求两个日期之间相差多少个月呢?
今天在工作中遇到一个问题,就是怎么在DB2中怎么来求两个日期之间相差多少个月呢?
结果找到一个方法如下:
在DB2中两个日期之间相减会等到一个整数总共有六种情况分别是: Java代码
  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代码
  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代码
  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代码
  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代码
  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代码
  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   


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