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

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

    PostgreSQLでは、localtimestamp() 関数は、タイムゾーンオフセットなしでローカルの日付と時刻を返します。

    タイムゾーンオフセットが必要な場合は、current_timestamp()を使用してください 代わりに。

    構文

    次のいずれかの方法で使用できます。

    localtimestamp
    localtimestamp(x)

    ここでx はオプションの精度パラメータであり、結果はxに丸められます。 秒フィールドの小数桁数。

    精度パラメーター(最初の構文)がない場合、結果は使用可能な完全な精度になります。

    例–完全な精度

    これは、利用可能な完全な精度を使用して結果を示すための基本的な例です。

    SELECT localtimestamp;

    結果:

    2020-07-01 15:55:48.039777

    例–特定の精度

    精度を指定する方法を示す例を次に示します。

    SELECT localtimestamp(0);

    結果:

    2020-07-01 15:56:02

    この例では、精度をゼロに指定しました。これは、小数秒が返されないことを意味します。

    これは、小数秒の数を指定する別の例です。

    SELECT localtimestamp(3);

    結果:

    2020-07-01 15:56:14.771

    トランザクション

    実際のタイムスタンプは、現在のトランザクションの開始時刻に基づいています。したがって、トランザクションが進行しても変化しません。

    これにより、単一のトランザクションが「現在の」時刻の一貫した概念を持つことができるため、同じトランザクション内の複数の変更に同じタイムスタンプが付けられます。

    これを示す例を次に示します。

    BEGIN;
    SELECT localtimestamp;
    SELECT pg_sleep(5);
    SELECT localtimestamp;
    SELECT pg_sleep(5);
    SELECT localtimestamp;
    COMMIT;

    psqlでそのトランザクションを実行したときの端末の完全な出力は次のとおりです。

    postgres=# BEGIN;
    BEGIN
    postgres=# SELECT localtimestamp;
          localtimestamp      
    --------------------------
     2020-07-02 09:25:38.3858
    (1 row)
    
    
    postgres=# SELECT pg_sleep(5);
     pg_sleep 
    ----------
     
    (1 row)
    
    
    postgres=# SELECT localtimestamp;
          localtimestamp      
    --------------------------
     2020-07-02 09:25:38.3858
    (1 row)
    
    
    postgres=# SELECT pg_sleep(5);
     pg_sleep 
    ----------
     
    (1 row)
    
    
    postgres=# SELECT localtimestamp;
          localtimestamp      
    --------------------------
     2020-07-02 09:25:38.3858
    (1 row)
    
    
    postgres=# COMMIT;
    COMMIT
    >

    pg_sleep()であっても、3つの時間値はすべて同じです。 関数は、トランザクション内の各ステートメント間の実行を遅らせるために使用されました。

    これは、statement_timestamp()とは対照的です。 行う ステートメントごとに変更します。

    ステートメント内の複数の呼び出し

    また、ステートメントが進行しても変化しません。

    \x
    SELECT 
      localtimestamp,
      pg_sleep(5),
      localtimestamp,
      pg_sleep(5),
      localtimestamp;

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

    localtimestamp | 2020-07-02 09:26:46.743801
    pg_sleep       | 
    localtimestamp | 2020-07-02 09:26:46.743801
    pg_sleep       | 
    localtimestamp | 2020-07-02 09:26:46.743801

    pg_sleep()であっても、3つの時間値はすべて同じです。 関数は、localtimestampへの各呼び出し間の実行を遅らせるために使用されました 。

    これは、clock_timestamp()とは対照的です。 関数、実行 ステートメントが進むにつれて変化します。

    この例では、垂直出力(拡張出力とも呼ばれます)を使用して、結果を少しコンパクトにしました。

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


    1. mysqlの日付フィールドと日と月のみを比較します

    2. MySQLとPHP:キリル文字を使用したUTF-8

    3. ClusterControlを使用した高可用性データベースとクラスターのデプロイ

    4. JDBCタイプの方言マッピングなし:-9