Хранение продолжительности ISO 8601 в PostgreSQL

Необходимо сохранить продолжительность в формате ISO 8601 P[n]Y[n]M[n]DT[n]H[n]M[n]S в PostgreSQL, а затем получить ее в сценарии в том же формате. В каком типе данных хранить продолжительность ISO 8601 в PostgreSQL?


person frmbelz    schedule 07.11.2019    source источник


Ответы (1)


Поиск в Google показывает, что некоторые люди хранят продолжительность ISO 8601 как VARCHAR. PostgreSQL, хотя среди других типов даты / времени есть _ 2_ тип данных, который может сохранять и возвращать продолжительность в формате iso_8601. Например,

CREATE TABLE xyz(
  id SERIAL PRIMARY KEY,
  duration INTERVAL
);

Продолжительность в формате ISO 8601

# SELECT duration FROM xyz;
 duration
----------
 PT0S
 PT1M28S
(2 rows)

Стиль вывода interval может быть установлен командой SET intervalstyle

SET intervalstyle = 'iso_8601';
person frmbelz    schedule 07.11.2019