sql >> データベース >  >> RDS >> PostgreSQL

timeofday()がPostgreSQLでどのように機能するか

    PostgreSQLでは、timeofday() はSQL標準ではない時間関数であり、現在の日付と時刻をタイムゾーンの省略形で返します。

    clock_timestamp()に似ています 関数は、結果をフォーマットされたtextとして返すことを除いて timestamp with time zoneではなく文字列 価値。

    両方の関数の結果は、ステートメントの実行中に変化します。したがって、1つのステートメント内で関数を複数回呼び出すと、ステートメントのさまざまな部分で異なる結果が得られる可能性があります。

    構文

    構文は次のようになります:

    timeofday()

    したがって、パラメータを受け入れません。

    これがデモンストレーションの基本的な例です。

    SELECT timeofday();

    結果:

    Thu Jul 02 10:00:27.068776 2020 AEST

    複数の呼び出し

    これは、単一のSQLステートメント内で関数を複数回呼び出したときに結果がどのように異なるかを示す基本的な例です。

    \x
    SELECT 
      timeofday(),
      pg_sleep(5),
      timeofday(),
      pg_sleep(3),
      timeofday();

    結果(垂直出力を使用):

    timeofday | Thu Jul 02 10:02:23.060770 2020 AEST
    pg_sleep  | 
    timeofday | Thu Jul 02 10:02:28.131195 2020 AEST
    pg_sleep  | 
    timeofday | Thu Jul 02 10:02:31.192749 2020 AEST

    ここでは、pg_sleep()を使用しました 実行を数秒間遅らせる関数。最初の呼び出しは実行を5秒間遅らせ、2番目の呼び出しは実行を3秒間遅らせます。

    毎回timeofday() と呼ばれ、実際の時間は少し異なりました。これは主にpg_sleep()が原因です 機能しますが、クエリの実行速度によっては、機能がない場合もわずかに異なる可能性があります。

    ここでもpg_sleep()はありません 呼び出します。

    SELECT 
      timeofday(),
      timeofday(),
      timeofday();

    結果(垂直出力を使用):

    timeofday | Thu Jul 02 10:03:26.044065 2020 AEST
    timeofday | Thu Jul 02 10:03:26.044076 2020 AEST
    timeofday | Thu Jul 02 10:03:26.044080 2020 AEST

    これらの例では、垂直出力(通常はpsqlでは拡張表示と呼ばれます)を使用して、結果を読みやすくしています。

    \xを使用して、psqlの拡張表示を切り替えることができます 。


    1. トラブルシューティング:リダイレクトが多すぎます

    2. ストアドプロシージャの列名とタイプを取得しますか?

    3. Oracleクエリに日付パラメータを追加します

    4. MariaDBで数値のみを返す