期間カラム

カラムに対するduration値のupsert操作を実行するには、文字列形式の値を使用します。

カラムに対するduration値のupsert操作を実行するには、文字列形式の値を使用します。duration値は、このセクションで説明する形式で表すことができます。
注: duration値は引用符なしで指定します。

期間形式

duration値は、以下の形式で表すことができます:

NyNmoNwNdNhNsNmsNusNns
ここで、
  • N:数字
  • y:年数
  • mo:月数
  • w:週数
  • d:日数
  • h:時間数
  • m:分数
  • s:秒数
  • ms:ミリ秒数
  • µsまたはus:マイクロ秒数
  • ns:ナノ秒数

たとえば、2か月間、10日間、12時間の期間の場合、2mo10d12hと表します。欠落しているduration指定子は0に設定されます。

ISO 8601形式

duration値は、以下のISO 8601形式で表すことができます:

PNYNMNDTNHNMNS
ここで、
  • P:duration値の先頭に配置される期間指定子
  • N:数字
  • Y:年数
  • M:月数
  • D:日数
  • T:時間
    • H:時間数
    • M:分数
    • S:秒数

たとえば、4年間、6か月間、3日間、12時間、30分間、5秒間の期間の場合、P4Y6M3DT12H30M5Sと表します。

duration値は、以下のISO 8601形式で表すことができます:

PNW
ここで、
  • P:duration値の先頭に配置される期間指定子
  • N:数字
  • W:週数
たとえば、6週間の場合、P6Wと表します。

代替のISO 8601形式

duration値は、以下の代替のISO 8601形式で表すことができます:

P[YYYY]-[MM]-[DD]T[hh]:[mm]:[ss]
ここで、
  • P:duration値の先頭に配置される期間指定子
  • YYYY:年数
  • MM:月数
  • DD:日数
  • T:時間
    • hh:時間数
    • mm:分数
    • ss:秒数

たとえば、4年間、6か月間、3日間、12時間、30分間、5秒間の期間の場合、P0004-06-03T12:30:05と表します。

手順

  • INSERT duration値。
    INSERT INTO cycling.race_times (
      finish_time,
      race_name, cyclist_name, race_date
    ) VALUES (
      1h4m48s20ms,
      '17th Santos Tour Down Under', 'Rohan DENNIS', '2017-04-14'
    );
  • UPDATE duration値。
    UPDATE cycling.race_times
    SET finish_time = 2h5m22s14ms
    WHERE race_name = '17th Santos Tour Down Under'
      AND cyclist_name = 'Rohan DENNIS'
      AND race_date = '2017-04-14';
  • SELECT duration値。
    SELECT *
    FROM cycling.race_times
    WHERE race_name = '17th Santos Tour Down Under'
      AND cyclist_name = 'Rohan DENNIS'
      AND race_date = '2017-04-14';
    出力:
     race_date  | race_name                   | cyclist_name | finish_time | race_time
    ------------+-----------------------------+--------------+-------------+--------------------
     2017-04-14 | 17th Santos Tour Down Under | Rohan DENNIS | 2h5m22s14ms | 19:15:18.000000000
    
    (1 rows)