LoginSignup
5
7

More than 5 years have passed since last update.

PostgreSQLでdate型同士の月の差を選択もしくは条件として指定する

Posted at

PostgreSQLでdate型同士の差を日数で選択することは簡単だが、
月数で選択(条件指定)するのは案外手間どった為、備忘録としてメモ。

選択する場合

SELECT EXTRACT(month from AGE(a_date, b_date)) 
FROM test_table;

全レコードについてそれぞれa_dateとb_dateの月の差が選択されます。

条件指定する場合

SELECT COUNT(*) from test_table 
WHERE EXTRACT(month FROM age(a_date, b_date)) = 1

a_dateからb_dateを引いて1となるレコードの数が結果として返却されます。

両パターンで使用している「EXTRACT」は以下ご覧いただければと思いますが、
日付や時刻の値から特定のフィールドを抽出する関数です。
https://www.postgresql.jp/document/7.2/user/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT

EXTRACT(month ~)と指定することで月のみを抽出することができます。

age関数は第1引数から第2引数を減算し、「年」「月」「日」を返却する関数です。
ここではEXTRACT関数で「month」つまり「月」を指定しています。

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7