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

スクリプトが機能する場合、Postgres now()のタイムスタンプは変更されません

    TFMから、私のハイライト:

    9.9.4。現在の日付/時刻

    PostgreSQLは、現在の日付と時刻に関連する値を返す多くの関数を提供します。これらのSQL標準関数は、現在のトランザクションの開始時刻に基づくすべての戻り値

    CURRENT_DATE
    CURRENT_TIME
    CURRENT_TIMESTAMP
    CURRENT_TIME(precision)
    CURRENT_TIMESTAMP(precision)
    LOCALTIME
    LOCALTIMESTAMP
    LOCALTIME(precision)
    LOCALTIMESTAMP(precision)
    

    ...

    これらの関数は現在のトランザクションの開始時刻を返すため、トランザクション中に値が変更されることはありません。これは機能と見なされます。目的は、単一のトランザクションが「現在の」時間の一貫した概念を持つことを可能にし、同じトランザクション内の複数の変更が同じタイムスタンプを持つようにすることです。

    PostgreSQLは、現在のステートメントの開始時刻と、関数が呼び出された瞬間の実際の現在時刻を返す関数も提供します。非SQL標準の時間関数の完全なリストは次のとおりです。

    transaction_timestamp()
    statement_timestamp()
    clock_timestamp()
    timeofday()
    now()
    

    transaction_timestamp() CURRENT_TIMESTAMPと同等です 、ただし、返される内容を明確に反映するように名前が付けられています。 statement_timestamp() 現在のステートメントの開始時刻(より具体的には、クライアントから最新のコマンドメッセージを受信した時刻)を返します。statement_timestamp() およびtransaction_timestamp() トランザクションの最初のコマンドで同じ値を返しますが、後続のコマンドでは異なる場合があります。 clock_timestamp() 実際の現在の時刻を返します 、したがって、その値は単一のSQLコマンド内でも変化します。 timeofday() 歴史的なPostgreSQL関数です。 Like clock_timestamp() 、実際の現在時刻を返しますが、タイムゾーン値を含むタイムスタンプではなく、フォーマットされたテキスト文字列として返します。 now() transaction_timestamp()と同等の従来のPostgreSQLです 。




    1. SQLServerピボットと複数結合

    2. PostgreSQL自動インクリメント

    3. 非アクティブな時間の後に接続がハングする

    4. Unixエポックをタイムスタンプに変換する方法