PostgreSQL に現在のタイムスタンプを挿入する

Bilal Shahid 2023年6月20日
  1. PostgreSQL の timestamp とは
  2. NOW() 関数を使用して PostgreSQL に現在のタイムスタンプを挿入する
  3. CURRENT_TIMESTAMP 関数を使用して、PostgreSQL に現在のタイムスタンプを挿入する
  4. LOCALTIMESTAMP 関数を使用して、PostgreSQL に現在のタイムスタンプを挿入する
PostgreSQL に現在のタイムスタンプを挿入する

多くの場合、現在の日付と時刻のデータをデータベースに保持する必要があります。 たとえば、顧客が当社の Web サイトで注文したときのログを保持したい場合があります。

このような状況では、アプリケーションまたは Web サイトが動的である場合、現在の日付と時刻を手動で記述して挿入することは現実的ではなく、人為的エラーにもつながる可能性があります。

したがって、この記事では、PostgreSQL のテーブルに現在のタイムスタンプを挿入するさまざまな方法と、その使用法と制限について説明します。 それらに直接ジャンプする前に、まずタイムスタンプの意味を理解しましょう。

PostgreSQL の timestamp とは

PostgreSQL では、timestamp はタイム ゾーンなしで日付と時刻を格納するデータ型です。 プログラミング言語のデータ型は、格納する値の型によって区別される特定のエンティティです。

timestamp データ型変数は、PostgreSQL では次のように宣言されます。

variable_name timestamp

PostgreSQL の timestamp が何であるかがわかったので、現在の日付と時刻を取得して timestamp 変数に挿入するのに役立つさまざまな関数の理解に進みましょう。

理解を深めるために、次の表を作成しています。

create table example1
(
variable_name timestamp
);

このテーブルに時刻と日付を手動で挿入する場合は、次の方法で実行できます。

INSERT INTO example1
VALUES ('2022-08-23 18:42:02');

このデータが正常に挿入されたことがわかります。

時刻と日付を手動で挿入

ただし、前に説明したように、時刻と日付のデータを手動で挿入することはお勧めできません。 したがって、PostgreSQL は、現在の時刻と日付を timestamp 変数に挿入するために使用できるさまざまな関数を提供します。

それらの使用法を1つずつ理解しましょう。

NOW() 関数を使用して PostgreSQL に現在のタイムスタンプを挿入する

PostgreSQL の NOW() 関数は、現在の日時とタイム ゾーンを返します。 使用されるタイム ゾーン データは、使用中のデータベース サーバーの設定に従います。

NOW() 関数は次のように使用されます。

SELECT NOW();

次のように、出力がタイム ゾーンと共にタイムスタンプ値を返していることがわかります。

NOW with timezone

タイムゾーンのない値に変換したい場合は、次のように使用できます。

SELECT NOW()::timestamp;

これにより、次の出力が得られます。

NOW without timezone

NOW() 関数を使用して、現在のタイムスタンプをテーブルに挿入できます。 example1 テーブルにいくつかの値を挿入して、それを示してみましょう。

INSERT INTO example1 VALUES (now());

以下に示すように、値は正常に挿入されます。

現在、タイムゾーン 2 なし

注: NOW() から取得された時刻と日付の値は、出力に示されているように、timestamp 変数に挿入されると、自動的に without time zone にキャストされます。

CURRENT_TIMESTAMP 関数を使用して、PostgreSQL に現在のタイムスタンプを挿入する

CURRENT_TIMESTAMP 関数は NOW() 関数に似ており、現在の日付と時刻のデータをタイムゾーンとともに返します。

これら 2つの機能は、互いの代替として同じ意味で使用できます。 CURRENT_TIMESTAMP 関数は、次の方法で結果を表示します。

SELECT CURRENT_TIMESTAMP;

CURRENT_TIMESTAMP with timezone

NOW() 関数と同様に、次の方法でこのデータをタイムゾーンなしの timestamp に変換できます。

SELECT CURRENT_TIMESTAMP::timestamp;

結果を見ると、時間データからタイム ゾーンが削除されていることがわかります。

CURRENT_TIMESTAMP without timezone

CURRENT_TIMESTAMP 関数を使用して、現在のタイムスタンプをテーブルに挿入できます。 example1 テーブルにいくつかの値を挿入して、それを示してみましょう。

INSERT INTO example1 VALUES (CURRENT_TIMESTAMP);

以下に示すように、値は正常に挿入されます。

CURRENT_TIMESTAMP without timezone 2

CURRENT_TIMESTAMP 関数を使用するもう 1つの側面は、返される時刻の精度を調整できることです。 たとえば、上記の出力では、時間が小数点以下 6 桁まで正確に表示されていることがわかります。

ただし、PostgreSQL では、必要に応じてこの精度を調整できます。 構文は、次のクエリで示されています。

SELECT CURRENT_TIMESTAMP(2);

CURRENT_TIMESTAMP 精度

出力では、精度パラメータで要求されているように、時刻が小数点以下 2 桁まで正確であることがわかります。 以下に示すように、精度を定義した後に現在のタイムスタンプを挿入できます。

INSERT INTO example1 VALUES (CURRENT_TIMESTAMP(2));

挿入が成功したことを以下に示します。

CURRENT_TIMESTAMP 精度を挿入

LOCALTIMESTAMP 関数を使用して、PostgreSQL に現在のタイムスタンプを挿入する

最後に、現在の日付と時刻を取得するという同じ目的を果たす LOCALTIMESTAMP 関数があります。 ただし、NOW() および CURRENT_TIMESTAMP 関数とは異なり、LOCALTIMESTAMP 関数はタイムゾーンなしで時刻と日付を返します。

現在のタイムスタンプ データを取得するためにどのように使用されるかを見てみましょう。

SELECT LOCALTIMESTAMP;

これにより、次の出力が得られます。

LOCALTIMESTAMP

したがって、LOCALTIMESTAMP 関数を使用して、現在のタイムスタンプをテーブルに挿入できます。 example1 テーブルにいくつかの値を挿入して、それを示してみましょう。

INSERT INTO example1 VALUES (LOCALTIMESTAMP);

以下に示すように、値は正常に挿入されます。

LOCALTIMESTAMP を挿入

CURRENT_TIMESTAMP 関数と同様に、LOCALTIMESTAMP 関数で時間精度を指定できます。 この構文は次のとおりです。

SELECT LOCALTIMESTAMP(2);

LOCALTIMESTAMP 精度

出力では、精度パラメータで要求されているように、時刻が小数点以下 2 桁まで正確であることがわかります。 現在のタイムスタンプは、以下に示すように、精度を指定して LOCALTIMESTAMP 関数を使用して挿入できます。

INSERT INTO example1 VALUES (LOCALTIMESTAMP(2));

挿入が成功したことを以下に示します。

LOCALTIMESTAMP 精度を挿入

これは、PostgreSQL のテーブルに現在のタイムスタンプを挿入するさまざまな方法をすべてまとめたものです。 NOW()CURRENT_TIMESTAMP、および LOCALTIMESTAMP 関数を使用して日付と時刻の値を timestamp データ型変数に挿入する方法を学習していただければ幸いです。

著者: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

関連記事 - PostgreSQL Timestamp