Хранение продолжительности ISO 8601 в PostgreSQL - PullRequest
1 голос
/ 08 ноября 2019

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

1 Ответ

3 голосов
/ 08 ноября 2019

Поиск в Google показывает, что некоторые люди хранят длительность ISO 8601 как VARCHAR. PostgreSQL, хотя среди других типов даты / времени имеет interval тип данных , который может хранить и возвращать длительность в формате 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';
...