|
||||||||||||||||||||||||
| 指定月数後の月末日を計算 | |
| 指定した月数後の月末日を計算してみましょう。 |
| 第一回の支払のあと月払いで何回か支払うとします。 そういった場合に、最終回の支払年月の末日が、いつになるのか、 計算してみましょう。 年月日は、生活していく上で、様々な場面で、重要な意味を持っていますが、 コンピュータで日付を扱うのは、意外に難しいものです。 というはの、ご承知のように、 月は12月までだったり、 月末は、30日の月と31日の月がある上に、 2月の月末は、うるう年なら29日、平年なら28日と、 いろいろな制限があるためです。 でも、この制限を計算式にするポイントが分かれば、 日付を扱う、他のいろいろなケースに応用することができます。 参考にしてください。 |
このページは、「活用情報掲示板」での タカ さんの質問がきっかけとなり、 作成したものです。質問ありがとうございました。 |
1.
データベースは、つぎのようなフィールド定義にします。
|
2. 各フィールドの説明です。
|
|
3.
支払年フィールドの詳しい説明をします。 このフィールドでは最終の支払年を計算しますが、計算式は、 始期年 + 年数 − If(支払月chk = 0, 1, 0) となっています。 うしろに付いている If(支払月chk = 0, 1, 0) は、 計算月数から年数をマイナスしたあとの残りの月数がゼロの場合に 調整をするためのものです。 これは、年数フィールドと 支払月chk フィールドの計算でそれぞれ12に もとづいた計算をしているため、計算月数フィールドが12の倍数の時は、 計算月数から年数をマイナスしたあとの残りの月数がゼロになります。 その場合は、最終支払年月が 2005年0月 などということになります。 このゼロになるのは、最終の支払月が12月になるべき場合で、 支払年が1年多くなっているため、 この支払年フィールドから1をマイナスします。 |
|
4.
支払月フィールドの詳しい説明をします。 このフィールドでは、 計算月数から年数をマイナスしたあとの残りの月数がゼロの場合は12にし、 そうでなければ、支払月chk フィールドの値をそのまま使います。 このように、計算月数から年数をマイナスしたあとの残りの月数がゼロの場合に、 12にするのは、上記、支払年フィールドで説明したのと同じ理由で、 残りの月数がゼロになるのは、最終の支払月が12月になるべき場合だからです。 そして、残りの月数がゼロになる場合には、 支払年フィールドから1をマイナスしますから、 それに対応して、こちらの支払月フィールドでは12にするわけです。 |
|
5. うるう判定フィールドの詳しい説明をします。 このフィールドは、下図のような、うるう年の判定ルールを計算式にしたものです。 うるう年の場合は u 、平年の場合は h になります。 |
|
|
|
6. 支払月末日フィールドの詳しい説明をします。 月末日は、30日の月と31の月があり、 さらに平年の2月は28日、うるう年は29日となります。 このフィールドでは、月に合わせて、月末日を算定します。 計算式は、 If(支払月 = 2, If(うるう判定 = 'u', 29, 28), If(支払月 = 4 or 支払月 = 6 or 支払月 = 9 or 支払月 = 11, 30, 31 )) まず、If(支払月 = 2, If(うるう判定 = 'u', 29, 28), で、 2月かどうかチェックし、2月なら、うるう年かどうかをチェックして うるう年なら29日、平年なら28日にします。 そして、4、6,9,11のいずれかの月の場合は30日に、 それ以外の場合は31日にします。 |
| 7. 下図は計算した例です。 |
|
| ご注意とお願い 実際に使用する前に、いろいろなデータを入力して、 正しい結果が得られるか、十二分に検証してください。 内容の正確性については、何ら保証できません。 トップページにも記載しましたように、 当サイトの情報は、皆さんの責任においてご利用下さい。 |
since Nov. 25, 2002 :