はじめに
データベース内に日付値を保存する機能により、クエリとデータの分析に時間要素を追加できます。注文情報、人々の年齢、その他のユースケースなど、レポートを正確に作成できるように、それぞれのデータベースで日付タイプを操作する方法を知っておくことが重要です。
このガイドでは、DATE
の保存について説明します。 PostgreSQLのタイプと、それらを操作できるさまざまな方法。
PostgreSQL DATE
データ型
DATE
PostgreSQLで入力すると、時間値が関連付けられていない日付を保存できます:
DATE
PostgreSQLは4バイトを使用して日付値を格納します。 PostgreSQLの日付値の値の範囲は、紀元前4713年から西暦5874897年です。
日付値を格納する場合、PostgreSQLはyyyy-mm-dd
を使用します フォーマット例: 1994-10-27。この形式は、PostgreSQLでデータを挿入するためにも使用されます。
PostgreSQLでは、現在の日付のデフォルトの日付値を設定することができます。これは、DEFAULT
を使用してテーブルを作成するときに実行できます。 およびCURRENT_DATE
キーワード。 last_checkout
ライブラリチェックアウトテーブルの列は、デフォルトで現在の日付を受け入れます:
CREATE TABLE checkouts ( author_id serial PRIMARY KEY, author_name VARCHAR (255) NOT NULL, book_title VARCHAR (255) NOT NULL, published_date DATE NOT NULL, last_checkout DATE NOT NULL DEFAULT CURRENT_DATE);
このテーブル構造に従って、INSERT INTO
を使用してデータを挿入できます。 ステートメント:
INSERT INTO checkouts (author_name, book_title, published_date)VALUES('James Joyce', 'Ulysses', '1922-02-02');
次に、checkouts
をクエリするとき 表を見ると、次のようになります。
SELECT * FROM checkouts; author_id | author_name | book_title | published_date | last_checkout -----------+-------------+------------+----------------+--------------- 1 | James Joyce | Ulysses | 1922-02-02 | 2021-09-27(1 row)
PostgreSQL DATE
機能
DATE
の詳細を知ることによって PostgreSQLと入力すると、保存した情報を処理する関数を使用できるようになります。前のセクションで紹介したテーブルから構築されたいくつかの一般的な関数について説明します。
現在の日付を取得
PostgreSQLでは、組み込みのNOW()
を使用して、現在の日付と時刻を取得できます。 働き。次のステートメントは、曜日と時刻の両方を返します。
SELECT NOW(); now ------------------------------- 2021-09-27 15:22:53.679985+02(1 row)
時刻に関心がない場合は、二重コロンを使用して日付のみを返すように指定することもできます::
DATETIME
をキャストするには DATE
の値 値:
SELECT NOW()::date; now ------------ 2021-09-27(1 row)
CURRENT_DATE
を使用する 以下に示すように、現在の日付を取得する別の方法です:
SELECT CURRENT_DATE; current_date -------------- 2021-09-27(1 row)
これらの3つのオプションはすべて、yyyy-mm-dd
の日付を返します。 フォーマット。 PostgreSQL内では、必要に応じてこの出力の形式を調整できます。
特定の形式で日付値を出力します
日付値を特定の形式で出力するには、TO_CHAR()
を使用します 働き。この関数は2つのパラメーターを受け入れます:
- フォーマットする値
- 出力形式を定義するテンプレート
SELECT TO_CHAR(NOW()::date, 'dd/mm/yyyy'); to_char ------------ 27/09/2021(1 row)
Sep 27, 2021
のような形式で日付を表示することもできます :
SELECT TO_CHAR(NOW():: DATE, 'Mon dd, yyyy'); to_char -------------- Sep 27, 2021(1 row)
システムの要件によっては、特定の方法でフォーマットされた日付が必要になる場合があります。これは、PostgreSQLで出力を指定できると便利なシナリオです。
2つの日付の間隔を取得する
PostgreSQLでは、-
を使用して2つの日付間の間隔を取得できます オペレーター。この演算子を使用すると、従業員の在職期間や本の出版からの時間などを計算できます。
この例では、ジョイスのユリシーズから何日経ったかを調べたいと思います。 published_date
から現在の日付を差し引いて公開されました :
SELECT author_name, book_title, now()::date - published_date as diffFROM checkouts;
結果:
author_name | book_title | diff -------------+------------+---------------------------- James Joyce | Ulysses | 36397 days (1 row)
日付値を使用して年齢を計算する
同じ例を続けて、AGE()
を使用して、現在の日付の年齢を年、月、日で計算できます。 働き。次のステートメントはAGE()
を使用しています ライブラリのcheckouts
から出版物の年齢を計算する関数 テーブル:
SELECT author_name, book_title, AGE(published_date)FROM checkouts;
この関数を使用すると、在庫のある本の古さを計算できます。
author_name | book_title | age -------------+------------+------------------------- James Joyce | Ulysses | 99 years 7 mons 25 days(1 row)
AGE()
に単一の日付を渡す場合は注意が必要です。 関数の場合、現在の日付を自動的に使用して減算および計算します。次のような2つの日付を関数に渡して、年齢を計算することもできます。
SELECT author_name, book_title, AGE('2000-01-01',published_date),FROM checkouts;
結果:
author_name | book_title | age -------------+------------+-------------------------- James Joyce | Ulysses | 77 years 10 mons 27 days(1 row)
日付値から年、四半期、月、週、または日を抽出します
ここで取り上げる最後の関数は、EXTRACT()
です。 年、四半期、月、日などの日付のコンポーネントを分離できるPostgreSQLの関数。
次のステートメントは、ユリシーズの公開日から年、月、日を引き出しています。 :
SELECT author_name, book_title, EXTRACT(YEAR FROM published_date) AS YEAR, EXTRACT(MONTH FROM published_date) AS MONTH, EXTRACT(DAY FROM published_date) AS DAY FROM checkouts;
結果は次のようになります。
author_name | book_title | year | month | day -------------+------------+------+-------+----- James Joyce | Ulysses | 1922 | 2 | 2(1 row)
これは、たとえばデータを使用した計算で日付値の一部のみが必要になる場合に注意するのに便利な関数です。
結論
このガイドでは、DATE
でできることの基本について説明しました。 PostgreSQLのデータ型。データベース内で日付データがどのように機能するかを知ることは重要です。アクセスして操作する方法を把握することで、経過時間の計算、クエリでの抽出の実行、および必要に応じて別のシステムの要件に一致させるための出力の構成を行うことができます。