求月份之差

2022-10-10 19:21:12 字數 1451 閱讀 7748

1、decodedate

proceduretform1.button1click(sender: tobject);

var

wyear1,wyear2,wmonth1,wmonth2,wday1,wday2:word;

wyeardiff,wmonthdiff:integer;

date1,date2:string;

begin

date1:='2009-12-01';

date2:='2010-02-01';

decodedate(strtodatetime(date1),wyear1,wmonth1,wday1);

decodedate(strtodatetime(date2),wyear2,wmonth2,wday2);

wyeardiff:=wyear2-wyear1;

wmonthdiff:=(wmonth2-wmonth1)+wyeardiff*12;

showmessage(inttostr(wmonthdiff));     //得到的結果是2

end;

2、monthsbetween(求法不准)

proceduretform1.button2click(sender: tobject);

var

date1,date2,date3,date4:string;

i,j:integer;

begin

date1:='2009-12-01';

date2:='2010-02-01';

date3:='2010-01-01';

date4:='2010-03-01';

i:=monthsbetween(strtodatetime(date1),strtodatetime(date2));

j:=monthsbetween(strtodatetime(date3),strtodatetime(date4));

showmessage(inttostr(i));      //得到的結果是2

showmessage(inttostr(j));     //得到的結果是1

end;

按道理的話,都應該得到2。

原因是這個是delphi的bug,他的時間是按照乙個月30.4375幾來除的,就是先取到daysbetween,即相隔多少天再除這個值,所以不准的,yearsbetween也不准,是除365.25幾按一年來除。這2個有bug,需要算具體的你還是自己寫吧。

所以  求月份之差應用方法一

SQL求月份累計

1月100,2月200,3月100,4月200.統計如下效果 1月100,2月300,3月500,4月600.就是每月統計一次前面所有的月的總額 直接上sql啦 select month,amount,sum amount over order by month asc from expense s...

C 類實現求兩個日期之差

這篇部落格是剛接觸c 的小白寫的第一篇部落格。下面是本小白寫完這題所得 1 類可以完全覆蓋結構體 2 在類外應用 類名 函式名 的形式定義類中的public型成員 3 注意好第2點用類寫函式真的很便利 4 函式頭中的形參也算乙個新的物件 問題描述 宣告乙個表示時間的類ctime,可以精確表示年 月 ...

在SqlServer中求日期月份的天數

如下 輸出 31 基本思路 要求乙個月的天數,先獲得這個月的年份和月份,在月份上加1,然後將年份 月份和 01 進行拼接,求出下個月第一天的日期 然後在該日期上 1,得到本月最後一天的日期 最有通過day 求得最後一天日期的天對應的數字,該數字即為本月的天數。一下看這個 似乎有點暈,我們來分解一下這...