【PostgreSQL】の日付計算(誕生日)

前の記事では型の説明をしました。
この記事では型の使い方が理解している程で紹介します。

関数とは

関数は日付けを取得したり文字から日付け型に変換できる機能を持っています。

他にもいろいろな種類の関数がありますが、今回は日付に関する一部の関数を紹介します。

to_date(文字列から日付に変更)

to_dateは文字列を日付型に変更できます。

to_date('基本的に8桁の日付' , 'YYYYMMDD')

日付けは記号なしで、基本的に8桁で数字を入力します。
「YYYYMMDD」は日付けの表示設定で日本語風に表示すると「年年年年月月日日」と表示しています。

to_date('20200101','YYYYMMDD')

上記の式は文字の’20200101′(2020年1月1日)をYYYYMMDD表示に変換している為結果は

'20200101'(変換前)→20200101(変換後)

となります。
見た目は「 ‘ ‘ 」シングルクォーテーションが無くなっただけのように思えますが、プログラム上は文字から日付へと変換されています。

current_date(現在の日付けを取得)

current_dateは現在の日付けを取得できます。

次の項目で使い方を紹介します。

age(主に年齢計算)

ageは主に年齢計算に利用されています。
年齢計算は「現在時刻-誕生日」で結果が出ます。

age(current_date , 20200101)

で2020年1月1日の人の年齢を参照することができます。
ageは引数の中に二つ入れないと年齢の計算をすることができません。もし引数の中が1つの場合は今日の日付から引かれるので注意しましょう。

date_part(日付けの一部を取り出す)

SQLを操作する際に年や月、日など一部だけを取り出したい場合などに利用できます。

date_part('year', 日付)

で年を年出すことができます。

date_part('year', 20200101)

だと2020年だけを取り出してくれます。

interval

intervalもdate_part同様指定した月日を計算することができます。
date_partと異なる点はわざわざ取り出したい箇所を取り出すのではなく、日付けから直接引きたい部分だけを引くことや足すことなどもできます。

current_date - interval '10 years'

この式は現在の日付から直接10年だけを引くことができます。
上記はyearsと「s」がついていますが、数値が1の場合はyearやmonthにしましょう。

これまでの関数を利用した例

2020年1月1日の人の年齢を計算する式を実際に書いてみます。
ちなみに年齢は文字列で指定されていることが条件です。

date_part('year', age(current_date , to_date('20200101' , 'YYYYMMDD')))

おそらくこの式で年齢計算ができるはずです。

©Copyright2022 FICH-LABO.All Rights Reserved.