MySQL虚拟列根据生日存储年龄

ymzxtsji  于 2023-08-02  发布在  Mysql
关注(0)|答案(2)|浏览(137)

我需要计算年龄。现在我想将年龄字段设置为一个虚拟列,并根据生日自动生成它。虚拟列的表达式应该如何编写
now()curate()函数不能用于虚拟列

tyu7yeag

tyu7yeag1#

可以使用以下表达式:

SELECT TIMESTAMPDIFF (YEAR, BIRTDAYCOLUMN, CURDATE()) FROM TABLE AS AGE

字符串

pw9qyyiw

pw9qyyiw2#

虚列不能使用动态函数,如果你需要一个方法来获取sql中的age值,你可以使用view。
例如:mysql> show create table t_user;
| t_user |
CREATE TABLE t_userid bigint(20)NOT NULL AUTO_INCREMENT,name varchar(255)DEFAULT NULL,birthday datetime DEFAULT NULL,PRIMARY KEY(id))ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
|
组中1行(0.00秒)
mysql> select * from t_user;
+-——-+-——————-+-———————————————————-+
| 名称,名称|生日| birthday |
+-——-+-——————-+-———————————————————-+
| 明|2011-07-1700:00:00| 2011-07-1700:00:00 |
+-——-+-——————-+-———————————————————-+
然后你可以使用一个view create view t_user_with_age as select id,name,birthday,floor(datediff(curdate(),birthday)/365)from t_user;
mysql> select * from t_user_with_age;
+-——-+-————-+-———————————————————-+-————-+
| 名称,名称|生日|年龄| age |
+-——-+-————-+-———————————————————-+-————-+
| 明|2011-07-17 00:00:00|十二岁| 12 |
+-——-+-————-+-———————————————————-+-————-+
组中1行(0.01秒)

相关问题