MySQL中根據(jù)出生日期計(jì)算年齡兩種方法
創(chuàng)建student表
mysql> create table student(
-> sid int primary key comment '學(xué)生號(hào)',
-> sname varchar(20) comment'姓名',
-> birth DATE comment '生日'
-> );
Query OK, 0 rows affected (0.01 sec)student表中插入數(shù)據(jù)
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)
查詢(xún)表中數(shù)據(jù)
mysql> select * from student;

查詢(xún)每個(gè)人的年齡
方法一:
curdate() 函數(shù)和 now() 函數(shù)的區(qū)別:
#在MySQL中,curdate( ) 和 now( ) 都是內(nèi)置函數(shù),用于獲取日期和時(shí)間信息,但它們的返回值有所不同。
# curdate() 函數(shù)只返回當(dāng)前日期部分,格式為'YYYY-MM-DD';
now()函數(shù)則會(huì)返回當(dāng)前的日期和時(shí)間,格式為'YYYY-MM-DD HH:MM:SS'
#因此,curdate( ) 和 now( ) 的主要區(qū)別在于,curdate( ) 只返回日期,而 now( ) 返回日期和時(shí)間。
year( )函數(shù):
#在MySQL中,year( curdate( ) )是一個(gè)函數(shù)調(diào)用,它的作用是從當(dāng)前日期(由curdate()函數(shù)返回)中提取出年份部分。
#因此這個(gè) year() 函數(shù)通常用于獲取當(dāng)前年份,或者在進(jìn)行日期比較或處理時(shí),只關(guān)心年份部分。
mysql> select sname,year(curdate())-year(birth) as 年齡 from student;

方法二:
date_format( now(), '%Y') 函數(shù)和 date_format( birth, '%Y')函數(shù):
#在MySQL中,date_format(now(),'%Y') 和date_format(birth,'%Y')是兩個(gè)函數(shù)調(diào)用,它們的作用是從當(dāng)前日期(由now()函數(shù)返回)和birth日期中提取出年份部分。
# %Y是一個(gè)格式代碼,表示四位數(shù)的年份。
# 所以,date_format(now(),'%Y')返回的是當(dāng)前年份, date_format ( birth, '%Y')返回的是birth 日期的年份。
# date_format ( now(), '%Y') - date_format ( birth, '%Y')的結(jié)果就是當(dāng)前年份減去 birth 日期的年份。這個(gè)表達(dá)式通常用于計(jì)算某人的年齡。
mysql> select sname,date_format(now(),'%Y')-date_format(birth,'%Y') as 年齡 from student;

附:mysql知道年齡求出生日期
下面是完整的代碼示例,包括獲取當(dāng)前日期和年齡、計(jì)算出生日期和使用MySQL函數(shù)實(shí)現(xiàn)計(jì)算。
-- 獲取當(dāng)前日期和年齡
SELECT CURDATE();
SELECT YEAR('2000-01-01');
SELECT YEAR('2022-01-01') - YEAR('2000-01-01');
-- 計(jì)算出生日期
SET @current_year = YEAR(CURDATE());
SET @age = 30;
SET @birth_year = @current_year - @age;
SET @birth_date = CONCAT(@birth_year, '-01-01');
-- 使用MySQL函數(shù)實(shí)現(xiàn)計(jì)算
SET @current_date = CURDATE();
SET @birth_date = DATE_SUB(@current_date, INTERVAL @age YEAR);總結(jié)
到此這篇關(guān)于MySQL中根據(jù)出生日期計(jì)算年齡兩種方法的文章就介紹到這了,更多相關(guān)MySQL根據(jù)出生日期計(jì)算年齡內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解mysql中字符串轉(zhuǎn)為數(shù)字的三種方法
這篇文章主要為大家詳細(xì)介紹了mysql中字符串轉(zhuǎn)為數(shù)字的三種常用方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11
Mysql的SELECT語(yǔ)句與顯示表結(jié)構(gòu)詳解
這篇文章主要介紹了Mysql的SELECT語(yǔ)句與顯示表結(jié)構(gòu)詳解的相關(guān)資料,需要的朋友可以參考下2023-01-01
mysql中寫(xiě)判斷語(yǔ)句的方法總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于mysql中寫(xiě)判斷語(yǔ)句的方法總結(jié)內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。2020-09-09
MySQL數(shù)據(jù)庫(kù)?JDBC?編程(Java?連接?MySQL)
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)?JDBC?編程Java?連接?MySQL,在?Java?中,這樣的封裝就是由?Java?標(biāo)準(zhǔn)庫(kù)來(lái)完成的,封裝出了一套統(tǒng)一的數(shù)據(jù)庫(kù)?API?稱(chēng)為?JDBC,下面來(lái)看文章的詳細(xì)介紹吧2021-12-12
mysql5.7使用binlog 恢復(fù)數(shù)據(jù)的方法
MySQL的binlog日志是MySQL日志中非常重要的一種日志,記錄了數(shù)據(jù)庫(kù)所有的DML操作,那么怎樣通過(guò)binlog 恢復(fù)數(shù)據(jù),本文就詳細(xì)的來(lái)介紹一下2021-06-06
Mysql數(shù)據(jù)庫(kù)分庫(kù)分表全面瓦解
物理服務(wù)機(jī)的CPU、內(nèi)存、存儲(chǔ)設(shè)備、連接數(shù)等資源有限,某個(gè)時(shí)段大量連接同時(shí)執(zhí)行操作,會(huì)導(dǎo)致數(shù)據(jù)庫(kù)在處理上遇到性能瓶頸。為了解決這個(gè)問(wèn)題,行業(yè)先驅(qū)門(mén)充分發(fā)揚(yáng)了分而治之的思想,對(duì)大庫(kù)表進(jìn)行分割2022-01-01

