見出し画像

SQL分析データ準備と基礎統計#08:生年月日から年齢を計算する

生年月日に限らず、契約日から特定日付までの日数を計算するときに利用するのが以下です。仮に現在日付からの日数を取得するとして、両方が日付データであれば、数値(小数)に変換し、10000で割り、小数点以下を落として整数にします。以下は書き方の例ですが、分かりやすいよう複数行にしています。

floor(cast((
cast((current_date) as integer format '99999999') - cast((生年月日) as integer format '99999999')
) as float)/10000as 現在年齢,

例えば20210301が現在日付で、20200305が誕生日の人と、20200205が誕生日の人の年齢を取得する場合、差分を取って10000で割ると、前者は10000よりも小さくなり、後者は10000を超えます。ここから整数部分をとれば前者は0歳、後者は1歳となります。

ちょっと大雑把になりますが、日付型のまま差分を取って365日で割っても同様に年数を取得できますし、30で割れば月数を取得できます。差分そのままは日数です。このときデータ型は日のインターバル型なので、数値に変換してあげると後々使いやすいです。

cast((current_date - 契約日) as integer) as 利用日数, 

///

#sql #teradata #analytics

この記事が気に入ったらサポートをしてみませんか?