gpt4 book ai didi

sql - postgresql 中的年龄限制

转载 作者:行者123 更新时间:2023-11-29 11:53:35 28 4
gpt4 key购买 nike

我想在 PostgreSQL 中实现以下限制:

People can not have birth dates where at 01/01/2016 have more than 100 years.

因此,我将限制实现为:

ALTER TABLE person ADD CONSTRAINT CHK_biggerThan100 CHECK(
(
(extract(year FROM current_date) - extract(year FROM birth)) * 365 +
(extract(month FROM current_date) - extract(month FROM birth))* 30 +
(extract(day FROM current_date) - extract(day FROM birth))
) < 36500 --100 years
);

有没有可能以更优雅的方式实现这个限制?我如何比较生日和 2016 年 1 月 1 日?

我的表 person 只有两个属性:作为主键的 person_id (int) 和 birth (date)。

最佳答案

使用函数 date_part() 和 age()

有关详细信息,请参阅日期函数的文档https://www.postgresql.org/docs/current/static/functions-datetime.html

ALTER TABLE person ADD CONSTRAINT CHK_biggerThan100 
CHECK (date_part('year',age(timestamp '2016-01-01',birth))<100)

关于sql - postgresql 中的年龄限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40116166/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com