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

PostgreSQLでタイムゾーンオフセットを使用して現在の日付と時刻を取得する方法

    問題:

    PostgreSQLデータベースからタイムゾーン情報を使用して現在の日付と時刻を取得したい。

    解決策:

    CURRENT_TIMESTAMPまたはNOW()のいずれかを使用して、タイムゾーンオフセットを使用して現在の日付と時刻を取得します。

    SELECT CURRENT_TIMESTAMP ;
    

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

    2019-09-15 13:13:12.118432+02

    ディスカッション:

    CURRENT_TIMESTAMP 現在の日付、時刻、およびタイムゾーンのオフセットを返します(PostgreSQLが実行されているマシンの日付、時刻、およびタイムゾーンを使用)。これは、'YYYY-MM-DD hh:mm:ss.nnnnnn +/- tz'の値として返されます。 フォーマット。この形式:

    • YYYY は4桁の年です。
    • MM は2桁の月です。
    • DD 月の2桁の日です。
    • hh は2桁の時間です。
    • mm 2桁の分です。
    • ss は2桁の秒です。
    • nnnnnn 0から6までの小数秒数(つまり、精度)を定義します。
    • + tz または-tz UTCからのプラスまたはマイナスのタイムゾーンオフセットです。

    お気づきのとおり、この関数には括弧がありません。ただし、特定の精度で日付と時刻を表示する場合は、オプションの整数引数を使用できます。これは、秒の小数部とタイムゾーンオフセットを含む日付と時刻を返します。この引数は0から6の範囲でなければなりません。 0は小数秒ではなく、1は小数秒(たとえば、小数点以下1桁)などです。次の例を見てください:

    SELECT CURRENT_TIMESTAMP(3) ;
    

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

    2019-09-15 13:01:51.142+02

    CURRENT_TIMESTAMP関数の引数として3を指定したため、この結果には3桁の小数秒が含まれています。タイムゾーンオフセットは引き続き最後に表示されます。

    この関数によって返される時間は、トランザクション中または単一のクエリ中に変更されません。常にトランザクションが開始された時刻です。

    NOW()はCURRENT_TIMESTAMPに似ています 関数と同じ結果を返します。違いは、CURRENT_TIMESTAMP はSQL標準関数ですが、NOW()はPostgreSQLに固有です。

    SELECT NOW() ;
    

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

    2019-08-27 12:18:55.324145+02
    

    NOW()関数には括弧が必要であることに注意してください。ただし、それらを空のままにして、デフォルト値を取得することができます。

    CURRENT_TIMESTAMPとNOW()は、タイムスタンプを返します。 データ型。


    1. 各行の列値に基づいて行を繰り返す

    2. 最初の文字を大文字にします。 MySQL

    3. MySQLで文字列の一部を置き換える方法

    4. Oracle PL/SQL文字列比較の問題