この記事では、さまざまな日付データ型と形式、それらの関数、および日常業務での日付の処理方法など、PostgreSQLでの日付の操作について説明します。例を説明するために、dbForge StudioforPostgreSQLを使用します。
イベントが実際にいつ発生したかを判断できるため、データ分析とデータ保存に日付とタイムスタンプを使用できます。日付について注意が必要なのは、国によって形式が異なるため、データベース管理の初心者にとっては非常に難しい作業になる可能性があることです。日付列のデータ型と形式は、ユーザーが入力した情報と常に一致している必要があります。さらに、ユーザーの好みに合わせて日付形式を変更する必要があります。 Postgresは幅広いデータ形式を処理できます。
コンテンツ
- PostgreSQLDATEデータ型の概要
- 現在の日付をデフォルト値として使用する
- PostgresDATE関数
- NOW()関数を使用して現在の日付を取得する
- TO_CHAR()関数の使用–指定された形式で日付値を出力します
- マイナス演算子を使用して2つの日付の間隔を取得する
- AGE()関数を使用して、年、月、日で日付の差を取得します
- EXTRACT()関数を使用して、日付値から年、四半期、月、週、日を取得します
- TO_TIMESTAMP()を使用して文字列をタイムスタンプに変換する
- 概要
PostgreSQLDATEデータ型の概要
DATE
PostgreSQLのデータ型は、YYYY-MM-DD形式(例:2022-03-24)で日付を格納するために使用されます。日付値を列に格納するには4バイトが必要です。可能な限り早い日付は紀元前4713年であり、可能な最も遅い日付は西暦5874897年であることに注意してください。
コードを書く段階でコードの可読性を維持することは非常に重要です。 dbForge Studio for PostgreSQLは、便利で直感的なPostgreSQLフォーマッターを誇っています。コードのフォーマット、構文チェック、およびコードの完了を処理するPostgresSQLフォーマッター機能に組み込まれているdbForgeStudio for PostgreSQLを使用すると、DATEデータ型の処理にも集中できます。
DATE
のデフォルト値 Postgresデータベースの列は、キーワードDEFAULT CURRENT DATE
を使用して設定できます。 、以下のスクリプトのように:
CREATE TABLE myevents (
event_id serial PRIMARY KEY,
event_details VARCHAR (255) NOT NULL,
event_date DATE NOT NULL DEFAULT CURRENT_DATE
);
INSERT INTO myevents (event_details)
VALUES('Meeting the client ABC');
SELECT * FROM myevents;
ご覧のとおり、[イベントの日付]の値 列は、現在のシステム日付をYYYY-MM-DDの形式で使用して、PostgreSQLサーバーによって自動的に挿入されます。
PostgresDATE関数
場合によっては、日付形式を変更したり、PostgreSQLテーブルの値を計算したりすることが重要です。世界中のさまざまなタイムゾーンのユーザーに対してこれを行う必要がある場合があります。この場合、SQL関数が重要です。
NOW()関数を使用して現在の日付を取得する
SELECT now();
二重コロン(::)を使用してDATETIME
をキャストできます DATE
の値 以下に示す値:
現在のシステムタイムスタンプは、NOW()
によって返されます。 働き。構文は次のとおりです。
SELECT now()::date;
TO_CHAR()関数の使用–指定された形式で日付値を出力します
Postgresの日付値の出力を指定された形式で表示するには、TO_CHAR()
機能が重宝します。構文は次のとおりです。
TO_CHAR(expression, format)
TO_CHAR()
によって受け入れられる2つのパラメーターがあります 機能:
- 入力日 :特定の形式に変換される日付。
- 日付形式 :新しい日付形式の仕様のプレースホルダー。
[MyEvents]から既存の日付値を変換する方法を見てみましょう テーブルをDD-MM-YYYY形式に変換します。
SELECT event_details,event_date as ExistingDateformat,
to_char(event_date,'DD-MM-YYYY') As NewDateFormat FROM myevents;
現在のタイムスタンプを適切な形式に変換するには、TO_CHAR()
を融合します。 およびNOW()
機能。
SELECT TO_CHAR(NOW() :: DATE, 'dd-mm-yyyy');
2つの日付の差を計算するには、マイナス(-)演算子を使用します。以下のクエリは、現在のタイムスタンプと [eventdate]の間の期間を提供します MyEventsから テーブル。
SELECT event_date,now() as currentdate,
now()-event_date as Interval FROM myevents
where event_id=2;
また、一定の時間が経過したときに返される日付の間隔を選択することもできます。以下のクエリをご覧ください:
SELECT (NOW() + interval '3 hour') AS threehourslater,
(NOW() + interval '2 day') AS Twodaylater,
(NOW() - interval '2 year') AS TwoYearBefore,
(event_date- interval '1 year') as eventdatedifference
from myevents;
AGE()関数を使用して、年、月、日で日付の差を取得します
AGE()
を使用 関数を使用すると、年、月、日で日付の差を取得できます。この関数は、人の年齢を判断するために使用できます。この関数では、2つの日付入力を受け入れるこの関数を使用して、最初の日付値が2番目の日付値から減算されます。関数スクリプトの値を逆にすると、結果は負の値になります。
生年月日が1995-10-09の人の年齢を調べてみましょう。構文は次のとおりです。
SELECT current_date,
AGE(timestamp '1995-10-09'::timestamp) as EmpAge;
EXTRACT()関数を使用して、日付値から年、四半期、月、週、日を取得します
EXTRACT()
関数は、指定された日付値から日、週、月、年、および四半期を返します。
1年を抽出する:
SELECT EXTRACT(YEAR FROM TIMESTAMP '2022-04-09 10:30:15') as year;
月を抽出する:
SELECT EXTRACT(Month FROM TIMESTAMP '2022-04-09 10:30:15') as Month;
四半期を抽出する:
SELECT EXTRACT(QUARTER FROM TIMESTAMP '2022-04-09 10:30:15') as QUARTER;
曜日を抽出します:
SELECT EXTRACT(DOW FROM TIMESTAMP '2022-04-09 10:30:15') as DOW;
その年の日を抽出します:
SELECT EXTRACT(DOY FROM TIMESTAMP '2022-04-09 10:30:15') as DOY;
dbForge Studioは、クエリの実行結果をそれぞれ個別のタブに表示することに注意してください。
EXTRACT()
関数はINTERVAL
と簡単に組み合わせることができます 。間隔を5年8か月23日08時間10分20秒に設定するとします。個々の値はEXTRACT
によって返されます 機能。
SELECT EXTRACT(YEAR
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Month
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Day
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(hour
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Minute
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' );
TO_TIMESTAMP()を使用して文字列をタイムスタンプに変換する
日付の値をUTC(協定世界時)で保持し、タイムスタンプを別のタイムゾーンに変換する場合は、必要に応じてタイムゾーンを変更できます。
SELECT * FROM pg_timezone_names;
現在のタイムゾーンを確認するには、SHOW TIMEZONE
を使用します コマンド。
AT TIME ZONE
を使用できます pg_timezone_names から必要なタイムゾーン値を選択して、選択したタイムゾーンの出力を受信します テーブル。
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'America/Los_Angeles';
AT TIME ZONE
さまざまなタイムゾーン出力を使用できます。
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'America/Washington';
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'Asia/Beijing';
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'Europe/Kyiv';
要約すると、PostgreSQLのDATE
データ型は、日付とタイムスタンプをテーブルに格納するときに非常に重要で便利なため、リレーショナルデータベースでは非常に一般的です。それらの使用範囲は非常に広いため、どの国やタイムゾーンのすべてのユーザーにも明確にすることが非常に重要です。さまざまなPostgres関数を使用すると、特定のタイムゾーンで使用できるように日付を変更できるため、ユーザーのニーズに簡単に対応できます。特定の形式やその他の詳細により、このようなデータの操作がはるかに簡単になります。最後に、直感的なグラフィカルインターフェイスと、DATE
を操作できる拡張コマンドラインの完璧な組み合わせを探している場合 データ型がさらに快適な場合は、dbForge StudioforPostgreSQLが便利です。