PostgreSQLにおけるタイムスタンプから日付抽出のコード例解説
PostgreSQLにおけるタイムスタンプから日付抽出の解説
PostgreSQLでの日付抽出の基本
PostgreSQLでは、タイムスタンプから日付を抽出するために、date_trunc()
関数を使用します。この関数は、指定した時間単位までタイムスタンプを切り捨てることができます。
基本的な構文:
date_trunc(unit, timestamp)
- unit: 切り捨てる時間単位。例えば、
'year'
,'month'
,'day'
など。 - timestamp: 抽出対象のタイムスタンプ。
例:
SELECT date_trunc('day', '2023-12-31 23:59:59');
これは、タイムスタンプ '2023-12-31 23:59:59'
を日単位に切り捨て、'2023-12-31 00:00:00'
を返します。
日付のみを抽出する
日付のみを抽出するには、date_trunc()
関数を使い、単位を 'day'
に設定します。
SELECT date_trunc('day', created_at) AS created_date
FROM your_table;
これは、your_table
の created_at
カラムから日付のみを抽出し、created_date
という名前の新しいカラムとして結果セットに追加します。
型変換 (Casting)
日付を他のデータ型に変換したい場合、キャストを使用します。例えば、日付を文字列に変換するには、::
演算子を使います。
SELECT date_trunc('day', created_at)::date AS created_date
FROM your_table;
これは、抽出した日付を date
型に変換し、created_date
という名前のカラムとして結果セットに追加します。
さらに詳しい情報
日付の抽出と表示
SELECT date_trunc('day', '2023-12-31 23:59:59') AS extracted_date;
date_trunc('day', '2023-12-31 23:59:59')
: タイムスタンプ'2023-12-31 23:59:59'
を日単位に切り捨てます。AS extracted_date
: 切り捨てられた日付をextracted_date
という名前のカラムとして結果セットに追加します。
テーブルからの日付抽出
SELECT date_trunc('day', created_at) AS created_date
FROM your_table;
your_table
: 対象のテーブル名です。created_at
: 抽出したい日付が含まれているカラム名です。date_trunc('day', created_at)
:created_at
カラムの値を日単位に切り捨てます。
SELECT date_trunc('day', created_at)::date AS created_date
FROM your_table;
::date
: 切り捨てられた日付をdate
型に変換します。
日付のフォーマット指定
SELECT to_char(date_trunc('day', created_at), 'YYYY/MM/DD') AS created_date_formatted
FROM your_table;
to_char(date_trunc('day', created_at), 'YYYY/MM/DD')
: 切り捨てられた日付を指定したフォーマット'YYYY/MM/DD'
に変換します。
日付範囲のフィルタリング
SELECT *
FROM your_table
WHERE created_at BETWEEN date_trunc('day', '2023-01-01') AND date_trunc('day', '2024-01-01');
BETWEEN ... AND ...
: 指定した日付範囲内のデータのみを抽出します。date_trunc('day', '2023-01-01')
とdate_trunc('day', '2024-01-01')
: 開始日と終了日の日付を指定します。
extract() 関数
extract()
関数は、タイムスタンプの特定の部分を抽出するのに便利です。
SELECT extract(day from created_at) AS extracted_day
FROM your_table;
これは、created_at
カラムの日部分のみを抽出します。
to_char() 関数
to_char()
関数は、日付や時刻を指定したフォーマットに変換します。
SELECT to_char(created_at, 'YYYY/MM/DD') AS created_date_formatted
FROM your_table;
これは、created_at
カラムの日付を YYYY/MM/DD
のフォーマットに変換します。
date_part() 関数
date_part()
関数は、extract()
関数と同様ですが、より柔軟なフォーマットを指定できます。
SELECT date_part('day', created_at) AS extracted_day
FROM your_table;
これは、extract()
関数と同じ結果を返します。
直接キャスト
特定のデータ型に直接キャストすることもできます。
SELECT created_at::date AS created_date
FROM your_table;
これは、created_at
カラムを date
型にキャストします。
算術演算
簡単な算術演算を使用して、日付を抽出することもできます。
SELECT created_at - (extract(hour from created_at) || ' hour'::interval) - (extract(minute from created_at) || ' minute'::interval) - (extract(second from created_at) || ' second'::interval) AS extracted_date
FROM your_table;
これは、タイムスタンプから時間を削除して日付のみを取得します。
sql postgresql casting