首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mysql上添加年龄从出生日期字段计算并验证年龄是否大于18检查约束

问如何在mysql上添加年龄从出生日期字段计算并验证年龄是否大于18检查约束
EN

Stack Overflow用户
提问于 2017-06-24 19:58:13
回答 2查看 1.3K关注 0票数 1

我已经使用MySQL名为people创建了表,它有六个属性id,name,lastname,道布(存储在Date数据类型中),性别,城市,我希望在道布(出生日期)中输入的值大于18,我如何设置这个限制,请帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-24 20:09:31

MySQL不支持检查约束。因此,在MySQL中执行此操作的惟一方法是在存储过程中创建触发器或包装插入。

您将使用的特定逻辑是:

代码语言:javascript
复制
dob <= curdate() - interval 18 year

因此,在几乎任何其他数据库中,这将类似于:

代码语言:javascript
复制
alter table t add constraint chk_t_dob check (dob <= curdate() - interval '18' year);

(注意:日期操作因数据库而异。)

票数 1
EN

Stack Overflow用户

发布于 2017-06-24 21:31:33

考虑以下内容,在2017年6月24日……

代码语言:javascript
复制
CREATE TABLE dobs(dob DATE NOT NULL);

INSERT INTO dobs (dob)
SELECT '2012-01-01' x FROM (SELECT 1) a WHERE FLOOR(DATEDIFF(NOW(),'2012-01-01') / 365.24) >= 18;

INSERT INTO dobs (dob)
SELECT '1975-01-01' x FROM (SELECT 1) a WHERE FLOOR(DATEDIFF(NOW(),'1975-01-01') / 365.24) >= 18;

INSERT INTO dobs (dob)
SELECT '1999-06-25' x FROM (SELECT 1) a WHERE FLOOR(DATEDIFF(NOW(),'1999-06-25') / 365.24) >= 18;

INSERT INTO dobs (dob)
SELECT '1999-06-24' x FROM (SELECT 1) a WHERE FLOOR(DATEDIFF(NOW(),'1999-06-24') / 365.24) >= 18;

SELECT * FROM dobs;
+------------+
| dob        |
+------------+
| 1975-01-01 |
| 1999-06-24 |
+------------+
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44736144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档