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)
查詢表中數(shù)據(jù)
mysql> select * from student;
查詢每個(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中使用INSERT INTO語(yǔ)句更新多條數(shù)據(jù)的例子
這篇文章主要介紹了MySql中使用INSERT INTO語(yǔ)句更新多條數(shù)據(jù)的例子,MySQL的特有語(yǔ)法,需要的朋友可以參考下2014-06-06詳解MySQL 重做日志(redo log)與回滾日志(undo logo)
這篇文章主要介紹了MySQL redo與undo日志的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下2020-08-08mysql 根據(jù)時(shí)間范圍查詢數(shù)據(jù)的操作方法
這篇文章主要介紹了mysql 根據(jù)時(shí)間范圍查詢數(shù)據(jù)的操作方法,下面是一些常見(jiàn)的時(shí)間范圍查詢示例代碼,需要的朋友可以參考下2024-01-01mysql處理添加外鍵時(shí)提示error 150 問(wèn)題的解決方法
當(dāng)你試圖在mysql中創(chuàng)建一個(gè)外鍵的時(shí)候,這個(gè)出錯(cuò)會(huì)經(jīng)常發(fā)生,這是非常令人沮喪的2011-11-11MySQL預(yù)編譯語(yǔ)句過(guò)多告警排查及解決方案
在使用Spring Cloud Alibaba搭建的微服務(wù)架構(gòu)中,項(xiàng)目采用ShardingSphere進(jìn)行分庫(kù)分表,MyBatis-Plus作為持久層,線上環(huán)境突發(fā)大量預(yù)編譯語(yǔ)句過(guò)多的數(shù)據(jù)庫(kù)告警,導(dǎo)致系統(tǒng)性能下降,所以本文給大家介紹了MySQL預(yù)編譯語(yǔ)句過(guò)多告警排查及解決方案,需要的朋友可以參考下2025-01-01詳解MySQL數(shù)據(jù)庫(kù)--多表查詢--內(nèi)連接,外連接,子查詢,相關(guān)子查詢
這篇文章主要介紹了MySQL多表查詢,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04