Skip to content

ISO 8601 Duration

Type Registry

ISO 8601 Duration

datetime.duration.iso_8601

Duration in ISO 8601 format (PnYnMnDTnHnMnS). Used in iCalendar, XML Schema, and many APIs.

Domain datetimeduration
Casts to INTERVAL
Scope Universal

Try it

CLI
$ finetype infer -i "PT30M"
→ datetime.duration.iso_8601

DuckDB

Detect
SELECT finetype('PT30M');
-- → 'datetime.duration.iso_8601'
Cast expression
{col}::INTERVAL
Safe cast pipeline
-- Normalise and cast in one step
SELECT TRY_CAST(finetype_cast(my_column) AS INTERVAL) AS clean_value
FROM my_table
WHERE finetype(my_column) = 'datetime.duration.iso_8601';

JSON Schema

finetype schema datetime.duration.iso_8601
{
  "$id": "https://noon.sh/schemas/datetime.duration.iso_8601",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "Duration in ISO 8601 format (PnYnMnDTnHnMnS). Used in iCalendar, XML Schema, and many APIs.",
  "examples": [
    "PT30M",
    "PT1H30M",
    "P1DT12H",
    "P1Y6M"
  ],
  "pattern": "^P(\\d+Y)?(\\d+M)?(\\d+D)?(T(\\d+H)?(\\d+M)?(\\d+S)?)?$",
  "title": "ISO 8601 Duration",
  "type": "string"
}

Examples

PT30MPT1H30MP1DT12HP1Y6M

Also known as

duration

Types in datetime