PostgreSQL に現在のタイムスタンプを挿入する
-
PostgreSQL の
timestamp
とは -
NOW()
関数を使用して PostgreSQL に現在のタイムスタンプを挿入する -
CURRENT_TIMESTAMP
関数を使用して、PostgreSQL に現在のタイムスタンプを挿入する -
LOCALTIMESTAMP
関数を使用して、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();
次のように、出力がタイム ゾーンと共にタイムスタンプ値を返していることがわかります。
タイムゾーンのない値に変換したい場合は、次のように使用できます。
SELECT NOW()::timestamp;
これにより、次の出力が得られます。
NOW()
関数を使用して、現在のタイムスタンプをテーブルに挿入できます。 example1
テーブルにいくつかの値を挿入して、それを示してみましょう。
INSERT INTO example1 VALUES (now());
以下に示すように、値は正常に挿入されます。
注:
NOW()
から取得された時刻と日付の値は、出力に示されているように、timestamp
変数に挿入されると、自動的にwithout time zone
にキャストされます。
CURRENT_TIMESTAMP
関数を使用して、PostgreSQL に現在のタイムスタンプを挿入する
CURRENT_TIMESTAMP
関数は NOW()
関数に似ており、現在の日付と時刻のデータをタイムゾーンとともに返します。
これら 2つの機能は、互いの代替として同じ意味で使用できます。 CURRENT_TIMESTAMP
関数は、次の方法で結果を表示します。
SELECT CURRENT_TIMESTAMP;
NOW()
関数と同様に、次の方法でこのデータをタイムゾーンなしの timestamp
に変換できます。
SELECT CURRENT_TIMESTAMP::timestamp;
結果を見ると、時間データからタイム ゾーンが削除されていることがわかります。
CURRENT_TIMESTAMP
関数を使用して、現在のタイムスタンプをテーブルに挿入できます。 example1
テーブルにいくつかの値を挿入して、それを示してみましょう。
INSERT INTO example1 VALUES (CURRENT_TIMESTAMP);
以下に示すように、値は正常に挿入されます。
CURRENT_TIMESTAMP
関数を使用するもう 1つの側面は、返される時刻の精度を調整できることです。 たとえば、上記の出力では、時間が小数点以下 6 桁まで正確に表示されていることがわかります。
ただし、PostgreSQL では、必要に応じてこの精度を調整できます。 構文は、次のクエリで示されています。
SELECT CURRENT_TIMESTAMP(2);
出力では、精度パラメータで要求されているように、時刻が小数点以下 2 桁まで正確であることがわかります。 以下に示すように、精度を定義した後に現在のタイムスタンプを挿入できます。
INSERT INTO example1 VALUES (CURRENT_TIMESTAMP(2));
挿入が成功したことを以下に示します。
LOCALTIMESTAMP
関数を使用して、PostgreSQL に現在のタイムスタンプを挿入する
最後に、現在の日付と時刻を取得するという同じ目的を果たす LOCALTIMESTAMP
関数があります。 ただし、NOW()
および CURRENT_TIMESTAMP
関数とは異なり、LOCALTIMESTAMP
関数はタイムゾーンなしで時刻と日付を返します。
現在のタイムスタンプ データを取得するためにどのように使用されるかを見てみましょう。
SELECT LOCALTIMESTAMP;
これにより、次の出力が得られます。
したがって、LOCALTIMESTAMP
関数を使用して、現在のタイムスタンプをテーブルに挿入できます。 example1
テーブルにいくつかの値を挿入して、それを示してみましょう。
INSERT INTO example1 VALUES (LOCALTIMESTAMP);
以下に示すように、値は正常に挿入されます。
CURRENT_TIMESTAMP
関数と同様に、LOCALTIMESTAMP
関数で時間精度を指定できます。 この構文は次のとおりです。
SELECT LOCALTIMESTAMP(2);
出力では、精度パラメータで要求されているように、時刻が小数点以下 2 桁まで正確であることがわかります。 現在のタイムスタンプは、以下に示すように、精度を指定して LOCALTIMESTAMP
関数を使用して挿入できます。
INSERT INTO example1 VALUES (LOCALTIMESTAMP(2));
挿入が成功したことを以下に示します。
これは、PostgreSQL のテーブルに現在のタイムスタンプを挿入するさまざまな方法をすべてまとめたものです。 NOW()
、CURRENT_TIMESTAMP
、および LOCALTIMESTAMP
関数を使用して日付と時刻の値を timestamp
データ型変数に挿入する方法を学習していただければ幸いです。
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