前回の記事で、日付型のデータから年月日をそれぞれ取得する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'
;