在PostgreSQL中存储ISO 8601持续时间

时间:2019-11-07 21:24:41

标签: postgresql setinterval intervals duration iso8601

需要将持续时间以ISO 8601格式P[n]Y[n]M[n]DT[n]H[n]M[n]S存储在PostgreSQL中,然后以相同格式在脚本中进行检索。在PostgreSQL中以哪种数据类型存储ISO 8601持续时间?

1 个答案:

答案 0 :(得分:3)

Google搜索显示某些人将ISO 8601持续时间存储为VARCHAR。 PostgreSQL尽管还有其他date/time types,但还有一个interval data type,它可以以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';