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

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

    PostgreSQLでは、date_trunc() 関数は、日付/時刻の値を指定された精度で切り捨てます。

    また、指定されたタイムゾーンで指定された精度に値を切り捨てることもできます。

    これは、trunc()の日付バージョンと考えることができます。 関数(数値を切り捨てます)。

    構文

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

    date_trunc(field, source [, time_zone ])

    場所:

    • field 入力値を切り捨てる精度です(例:monthhour 、など)。この引数の許容値の完全なリストについては、以下を参照してください。
    • source タイプタイムスタンプの値式です 、タイムゾーン付きのタイムスタンプ 、または間隔 。タイプ日付の値に注意してください および時間 タイムスタンプに自動的にキャストされます または間隔 それぞれ。
    • オプションのtime_zone 別のタイムゾーンを指定するために引数を指定できます。

    field 引数は次のいずれかになります:

    • マイクロ秒
    • ミリ秒
    • 時間
    • 四半期
    • 10年
    • 世紀
    • ミレニアム

    基本的な例

    実例を示します。

    SELECT date_trunc('hour', timestamp '2020-06-30 17:29:31');

    結果:

    2020-06-30 17:00:00

    日付の時間部分が17:29:31から切り捨てられていることがわかります 17:00:00へ 。 hourを使用したためです 最初の引数について。

    ここでは、最初の引数の値が異なります。

    \x
    SELECT 
      date_trunc('minute', timestamp '2020-06-30 17:29:31'),
      date_trunc('day', timestamp '2020-06-30 17:29:31'),
      date_trunc('month', timestamp '2020-06-30 17:29:31'),
      date_trunc('year', timestamp '2020-06-30 17:29:31');

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

    date_trunc | 2020-06-30 17:29:00
    date_trunc | 2020-06-30 00:00:00
    date_trunc | 2020-06-01 00:00:00
    date_trunc | 2020-01-01 00:00:00

    この場合、私は\xを使用しました 拡大表示/垂直出力を有効にして、結果を読みやすくします。

    タイムゾーンあり

    WITH TIME ZONEを示す例を次に示します。 オプション。

    SELECT 
    date_trunc('hour', timestamp with time zone '2020-06-30 17:29:31+00'),
    date_trunc('hour', timestamp with time zone '2020-06-30 17:29:31+01');

    結果:

    date_trunc | 2020-07-01 03:00:00+10
    date_trunc | 2020-07-01 02:00:00+10

    これらの例を実行したときのローカルタイムゾーンはオーストラリア/ブリスベンでした。

    3番目の引数として完全なタイムゾーン名を追加することもできます。

    SELECT 
    date_trunc('hour', timestamp with time zone '2020-06-30 17:29:31+12', 'Pacific/Auckland'),
    date_trunc('hour', timestamp with time zone '2020-06-30 17:29:31+12', 'Pacific/Auckland');

    結果:

    date_trunc | 2020-06-30 15:00:00+10
    date_trunc | 2020-06-30 15:00:00+10

    間隔あり

    日付の代わりに間隔値を使用する例を次に示します。

    SELECT date_trunc('hour', interval '7 days 5 hours 15 minutes');

    結果:

    7 days, 5:00:00


    1. SQLite JSON_GROUP_ARRAY()

    2. Workbenchを使用してSSHトンネル経由でリモートMySQLサーバーに接続する

    3. SQLite Node.js

    4. Oracle CloudPlatformでのMySQLデータベースサービスでのOracleJDeveloperの使用、パート3