DB2中怎么來求兩個日期之間相差多少個月呢?
今天在工作中遇到一個問題,就是怎么在DB2中怎么來求兩個日期之間相差多少個月呢?
結(jié)果找到一個方法如下:
在DB2中兩個日期之間相減會等到一個整數(shù)總共有六種情況分別是:
- select date('2010-1-30')-date('2010-1-1') from RATE_INFO;
select date('2010-1-30')-date('2010-1-1') from RATE_INFO;
查詢結(jié)果是:29
29代表的意思是 29天
- select date('2010-10-1')-date('2010-1-1') from RATE_INFO;
select date('2010-10-1')-date('2010-1-1') from RATE_INFO;
查詢結(jié)果是:900
900代表的意思是 9個月0天
- select date('2010-12-3')-date('2010-1-1') from RATE_INFO;
select date('2010-12-3')-date('2010-1-1') from RATE_INFO;
查詢結(jié)果是:1102
1102代表的意思是 11個月2天
- select date('2011-10-1')-date('2010-1-1') from RATE_INFO;
select date('2011-10-1')-date('2010-1-1') from RATE_INFO;
查詢結(jié)果是:10900
10900代表的意思是 1年9個月0天
- select date('2020-10-1')-date('2010-1-1') from RATE_INFO;
select date('2020-10-1')-date('2010-1-1') from RATE_INFO;
查詢結(jié)果是:100900
100900代表的意思是 10年9個月0天
總結(jié)起來是: 個位、十位用來表示相差多少天
百位、千位用來表示相差多少月
萬位、十萬位用來表示相差多少年
我自己寫了一個函數(shù)用來計算兩個日期之間相差多少個月
-- 計算兩個日期之間相差多少個月,如果有零星的天數(shù),則加上一個月
- 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進(jìn)行比較,將日期大的賦值給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 --如果有零星天,即天數(shù)大于零則月數(shù)加上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
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進(jìn)行比較,將日期大的賦值給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 --如果有零星天,即天數(shù)大于零則月數(shù)加上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
拿出來分享一下,希望對大家有所幫助
當(dāng)前題目:DB2中怎么來求兩個日期之間相差多少個月呢?
文章地址:
http://weahome.cn/article/pcgjcj.html