Unix エポックから PostgreSQL の日付に変換する

Bilal Shahid 2023年6月20日
  1. Unix エポックとは
  2. Unix エポック から PostgreSQL の日付への変換
  3. 現在時刻からのエポック
  4. エポック から日付と時刻を取得する
  5. to_timestamp() 関数
  6. タイムゾーンアプローチによるタイムスタンプ
  7. まとめ
Unix エポックから PostgreSQL の日付に変換する

PostgreSQL は、ユーザー向けに多数の日付と時刻の関数を提供しています。 これらの関数と演算子は、動的計算でユーザーを支援するために特別に設計されています。

日付と時刻の関数は、ソフトウェアやアプリケーションで最もよく使用される関数の 1つです。

たとえば、ユーザーの単純な年齢計算では、必要なすべての計算を実行するために、バックエンドで日付と時刻の関数が必要です。

現在の日付とユーザーの生年月日を比較して年齢を計算します。 他のいくつかのアプリケーションでは、日付と時刻の関数と演算子を使用する必要があります。

この記事は、Unix の エポック 日付を計算するのに役立つように特別にキュレーションされています。

Unix エポックとは

記事を進める前に、Unix エポック とは何かを明確にする必要があります。 Unix 時間は、ある時点を表すために使用されるコンピューティングのシステムです。

Unix エポック から経過した秒数です。 ただし、今回のシステムはうるう秒をカウントしません。

Unix エポック から経過したうるう秒を除いた秒数を返します。

Unix エポック とは何かという疑問が残ります。 Unix エポック は、1970 年 1 月 1 日 00:00:00 UTC の固定日時です。

エンジニアは、Unix エポック を任意に設定して、時間の開始に統一された日付を調整して設定しました。 言い換えれば、Unix エポック 日付から経過した秒数は世界中の特定の時間で同じままであるため、世界中の日付と時刻を調整するのに役立ちます。

Unix エポック から PostgreSQL の日付への変換

PostgreSQL で現在の日付を取得する方法は多数あります。 Unix の エポック を現在の日付に変換するために使用される SQL ステートメントと関数に移る前に、いくつかの必要な SQL ステートメントを詳細に説明します。

現在時刻を取得する方法

Unix エポック から日付を取得する場合、PostgreSQL で現在の時刻を取得する方法を理解することが不可欠です。 その後、現在の時刻を使用して日付を計算できます。

次のステートメントは、現在の時刻を取得するために PostgreSQL で使用されます。

SELECT now();

関数 now() は PostgreSQL で現在の時刻を取得するために使用されます。 後で日付を計算するために使用されるタイムスタンプを返します。

次のクエリの結果は次のとおりです。

現在のタイムスタンプ

現在時刻からのエポック

Unix エポック については、上記のセクションで詳しく説明しています。 次のステートメントは、Unix エポック から経過した秒数を計算するために使用できます。

SELECT EXTRACT(epoch from now());

SQL クエリを PostgreSQL で実行して、Unix エポック から経過した秒数を取得できます。 now() 関数は、SQL ステートメントで エポック と共に現在の時刻を取得するために使用されています。

次のクエリの結果は次のとおりです。

経過秒数

エポック から日付と時刻を取得する

EXTRACT SQL ステートメントは、epoch および now() とともに、Unix Epoch から経過した秒数を返します。 しかし、エポック から日付と時刻を取得したい場合はどうすればよいでしょうか?

エポック から日付と時刻を取得するには、2つの方法を使用できます。

  1. to_timestamp() 関数
  2. タイムゾーンアプローチによるタイムスタンプ

これらの手順については、以下で説明します。

to_timestamp() 関数

to_timestamp() 関数を epoch および now() と一緒に使用して、Unix Epoch から日付と時刻を取得できます。

to_timestamp() 関数は倍精度の引数を取ります。 Unix エポック をタイムゾーン付きのタイムスタンプに変換します。

to_timestamp() 関数を使用して日付と時刻を取得する

次のステートメントを PostgreSQL で実行して、エポック から日付と時刻を取得できます。

SELECT to_timestamp(extract(epoch from now()));

クエリ結果は次のとおりです。

タイムスタンプ

to_timestamp() 関数を使用して エポック から日付を取得する

エポック からの日付のみを取得することに関心がある場合は、少し異なるアプローチで to_timestamp() 関数を使用できます。 次のステートメントは、to_timestamp() 関数を使用してエポックから日付を取得する方法を示しています。

SELECT to_timestamp(extract(epoch from now()))::date;

このクエリは、Unix エポック からの日付のみを返します。 クエリの結果は次のとおりです。

日付

タイムゾーンアプローチによるタイムスタンプ

Unix エポック を日付または時刻に変換するために使用できる 2 番目のアプローチは、"タイム ゾーン付きタイムスタンプ" アプローチを使用することです。 to_timestamp() 関数と同じ機能を実行します。

このアプローチは、to_timestamp() 関数に代わるものです。 1つのアプローチが機能しない場合は、別のアプローチに従って作業を完了できます。

タイムスタンプ アプローチを使用した日付と時刻の取得

次のステートメントを実行すると、Unix Epoch から日付と時刻を取得できます。

SELECT timestamp with time zone 'epoch' + extract(epoch from now()) * interval '1 second';

このアプローチは、エポック に秒を追加します。 Unix エポック から日付と時刻を返します。

クエリの結果は次のとおりです。

タイムスタンプアプローチ

タイムスタンプ アプローチを使用して エポック から日付を取得する

エポック から日付のみを取得することに関心がある場合は、必要な出力を受け取るために、タイムスタンプのアプローチを少し変更することができます。

次のステートメントは、タスクを実行します。

SELECT (timestamp with time zone 'epoch' + extract(epoch from now()) * interval '1 second') :: date;

このステートメントは、エポック からの日付のみを返します。 したがって、このステートメントは、日付とともに時刻が必要ない場合に使用できます。

または、上記のセクションで説明したように、to_timestamp() 関数を使用した同様のステートメントを使用できます。

クエリの結果は次のとおりです。

タイムスタンプアプローチ - 日付

まとめ

PostgreSQL の多数の日付および時刻関数は、ユーザーがさまざまな計算を行うのに役立ちます。

この記事では、エポックから日時を取得するために、to_timestamp() 関数と "timestamp with time zone" アプローチを使用しました。 すべてのステップは、ユーザーが従うために詳細に説明されています。

著者: 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