PostgreSQL 中没有时间的间隔类型

Interval type without time in PostgreSQL

我在应用程序端使用 PostgreSQL 类型 INTERVALjava.time.Period 类型。

我想要的是限制插入除年月日以外的所有字段的INTERVAL列。

我知道 INTERVAL type definition 中有 [ fields ] 部分,但我只能在其中放入 YEAR TO MONTH:

CREATE TABLE test_interval (
  col1 INTERVAL YEAR TO MONTH -- only years and month allowed
)

我需要:

-- not a real SQL
CREATE TABLE test_interval (
  col1 INTERVAL YEAR TO MONTH -- only years, month and days allowed
)

有什么解决方法吗?

试试这个:

create table test_interval 
(col1 interval
,constraint col1_check check(date_trunc('day', col1) = col1)
)