前回の記事で、日付型のデータから年月日をそれぞれ取得するextract関数を紹介したが、実際には「○年○月」という形式で取得した方が都合が良い場合が多い。
このような場合、今回紹介するdate_trunc関数を使うと良い。
date_trunc関数
基本的な使い方を見ていこう。
SELECT
request_time
, date_trunc('month', request_time)
FROM
access_log
;
date_trunc関数の第一引数には任意の値を文字列として指定する。
extract関数の場合は、extract(month from request_time)という書き方だったが、date_trunc関数ではmonthをシングルクォーテーションで囲む必要がある。
このクエリを実行すると以下の結果が得られる。
指定した単位(month)以下の値が切り捨てられ、○年○月という結果を得ることができた。
これを利用し、例えば2012年10月のデータだけを取り出したい場合は以下のように書けば良い。
SELECT
*
FROM
access_log
WHERE
date_trunc('month', request_time) = timestamp '2012-10-01 00:00:00'
;