まさかまさかの4回目。いま宝くじを買えば3億当確の安元です。
最近肩こりがひどいので、昨日からピップマグネループつけてます。
そちらのレビューはまた今度。ビバ!プラシーボ!!
さて本題。
最近めっきり聞くことも少なくなった「数え年」。皆さんご存じでしょうか?
ウィキペディアさんに聞いてみました
数え年(かぞえどし)とは年齢や年数の数え方の一つである。生まれた時点、基点となる最初の年を「1歳」、「1年」とし、以降元日(1月1日)を迎えるごとにそれぞれ1歳、1年ずつ加える(例:12月31日に出生した場合、出生時に1歳で翌日(1月1日)に2歳となる。また1月1日に出生した場合は、2歳になるのは翌年の1月1日になる)。数え歳とも、単に数えともいう。
これに対し、誕生日前日午後12時に加齢、加年する数え方を満年齢、満という。本稿においては主に年齢に関する事柄について記述する。
これ日本独自のものかと思ってましたが、アジア圏ではそれなりに使われているそうです。
私が必要となった数え年は、「1月1日」での年齢加算ではなく
「4月1日」での年齢加算でした。いかにも日本の企業で必要になりそうですね!
年齢を計算してみましょう
誕生日から一般的な年齢計算を行いましょう
ここで一番大切なのは「1979-09-02」ですね!私の誕生日です!
SELECT句の2行目
age関数が返してくる値は経過年月日ですね。
SELECT句の3行目
age関数の結果から「年」だけを切り出したものこれが「満年齢」になります。
1月1日で年齢を加算する
数え年ということは、「1月1日」で年齢が加算されるということです。
ということは、何月に生まれようとも誕生日を「1月1日」生まれにしてしまえば
みんな一緒に歳をとれますね!
SELECT句2行目が示すように、
誕生日から年だけ切り出し「-01-01」を付け足すことで無理矢理「1月1日」に強制しています
やや乱暴ですが、これで数え年はでました。
4月1日で年齢を加算する
では日本ではよく使う「4月1日」を基準に考える「年度」で歳を取りましょう。
ここで問題になるのは1月〜3月生まれの人々です。
先ほどのように全員「4月1日」生まれに強制してしまいたいのですが、単純に年を切り出すと
1月〜3月生まれは1歳進んでしまいます。
この3ヶ月が邪魔なので、みんな誕生日を3ヶ月巻き戻して考えてしまいましょう。
3月生まれは前年の12月生まれに、4月生まれは同年1月生まれになりますね。
これで年をそろえることができます。
1920年8月生まれは90歳 3月生まれは91歳と差が出ているのがわかります。
PostgreSQLでは、日付計算が「 + ’1months’」のように月単位や年単位での計算ができます。
長々とSQLを書いてきましたが、システム内で頻繁に年度計算を利用する場合は
関数化してSQLに組み込むと使い勝手がよくなるのでご検討ください。
それでは肩がこってきたのでこの辺で。