閏年の処理

とある案件で、生年月日を元に何歳以上何歳以下を検索するようなSQL文を生成していたのですが、、、
今日は、閏年の2月29日。
年齢を計算するのに、“今日”を基準にしていたので、SQL文はこんな感じになります。
( 誕生日 <= '1971-02-29' ) and ( 誕生日 > ‘1970-02-29’ )
エラーになりました。
当然ですね。1971年も1970年も、2月29日がないのですから。
“今日”が2/29の場合は、日付を-1して、2/28として計算するか…と思ったら、先ほどテレビのニュースで、たまたま閏年の話をしていました。
戸籍上の誕生日は2/29となるそうですが、年齢は3/1生まれとして扱うのだそうです。
なので、“今日”が2/29の場合は、
( 誕生日 <= '1971-03-01' ) and ( 誕生日 > ‘1970-03-01’ )
としないといけないということですね。
う〜〜ん、勉強になりました。
4年後は忘れてそうな気がしますが(笑)

カテゴリー: Webコンテンツ パーマリンク