MySQL中根据出生日期计算年龄

创建student表

mysql> create table student(

-> sid int primary key comment '学生号',

-> sname varchar(20) comment'姓名',

-> birth DATE comment '生日'

-> );

Query OK, 0 rows affected (0.01 sec)

student表中插入数据

mysql> insert into student values (100,'张三','1999-12-12');

Query OK, 1 row affected (0.00 sec)

mysql> insert into student values (101,'李四','1996-8-15');

Query OK, 1 row affected (0.01 sec)

查询表中数据

mysql> select * from student;

查询每个人的年龄

方法一:

curdate() 函数和 now() 函数的区别:

#在MySQL中,curdate( ) 和 now( ) 都是内置函数,用于获取日期和时间信息,但它们的返回值有所不同。

curdate() 函数只返回当前日期部分,格式为'YYYY-MM-DD';

now()函数则会返回当前的日期和时间,格式为'YYYY-MM-DD HH:MM:SS'

#因此,curdate( ) 和 now( ) 的主要区别在于,curdate( ) 只返回日期,而 now( ) 返回日期和时间。

year( )函数:

#在MySQL中,year( curdate( ) )是一个函数调用,它的作用是从当前日期(由curdate()函数返回)中提取出年份部分。

#因此这个 year() 函数通常用于获取当前年份,或者在进行日期比较或处理时,只关心年份部分。
mysql> select sname,year(curdate())-year(birth) as 年龄 from student;

方法二:

date_format( now(), '%Y') 函数和 date_format( birth, '%Y')函数:

#在MySQL中,date_format(now(),'%Y') 和date_format(birth,'%Y')是两个函数调用,它们的作用是从当前日期(由now()函数返回)和birth日期中提取出年份部分。

%Y是一个格式代码,表示四位数的年份。

所以,date_format(now(),'%Y')返回的是当前年份, date_format ( birth, '%Y')返回的是birth 日期的年份。

date_format ( now(), '%Y') - date_format ( birth, '%Y')的结果就是当前年份减去 birth 日期的年份。这个表达式通常用于计算某人的年龄。

mysql> select sname,date_format(now(),'%Y')-date_format(birth,'%Y') as 年龄 from student;

相关推荐
冬奇Lab1 小时前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
小猿姐3 小时前
MySQL Top 10 热点问题 AI 运维实战:从内核诊断到云原生运维
mysql·云原生·aiops
ClouGence11 小时前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
云技纵横13 小时前
Gap Lock 死锁实战:5 秒在本地复现 MySQL 间隙锁死锁
后端·mysql
无响应de神14 小时前
三、用户与权限管理
数据库·mysql
摇滚侠1 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
麦聪聊数据1 天前
数据服务化时代:企业数据能力输出的核心路径
数据库
ApacheSeaTunnel1 天前
实战演示 | 基于 Apache SeaTunnel 与 Apache DolphinScheduler 实现 MySQL 到 Doris 离线定时增量同步
大数据·mysql·开源·doris·数据集成·seatunnel·数据同步
shushangyun_1 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化