怎么使mysql計(jì)算年齡 mysql求年齡

sql根據(jù)出生年月計(jì)算年齡

SQL計(jì)算年齡:

創(chuàng)新互聯(lián)建站專注于企業(yè)成都營(yíng)銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、鹽津網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁(yè)面制作商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為鹽津等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

SELECT FLOOR(DATEDIFF(CURDATE(), STR_TO_DATE(birthday, '%Y-%m-%d'))/365) AS age FROM table_name;

拓展:MySQL中可以使用TIMESTAMPDIFF函數(shù)根據(jù)出生日期計(jì)算年齡,它接受5個(gè)參數(shù):

TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2, [datetime_expr3], [datetime_expr4])

unit參數(shù)可以是YEAR,QUARTER,MONTH,WEEK,DAY,HOUR,MINUTE,SECOND中的任何一個(gè),代表了計(jì)算結(jié)果的單位。

如何用SQL語(yǔ)句把出生日期計(jì)算年齡,比如是1984-2-16怎么算出年齡啊

語(yǔ)句為:SELECTFLOOR(DATEDIFF(CURRENT_DATE,'1984-2-16')/356)

常用sql對(duì)數(shù)據(jù)庫(kù)操作:

連接數(shù)據(jù)庫(kù)命令:?mysql-uroot-p密碼

創(chuàng)建數(shù)據(jù)庫(kù):createdatabasedbname;

查看所有的數(shù)據(jù)庫(kù):showdatabases;

刪除數(shù)據(jù)庫(kù):?dropdatabasedbname;

切換數(shù)據(jù)庫(kù):usedbname;

知識(shí)拓展:

MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQLAB公司開發(fā),目前屬于?Oracle?旗下產(chǎn)品。MySQL是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,在WEB應(yīng)用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng))應(yīng)用軟件。

MySQL根據(jù)出生日期計(jì)算年齡的五種方法比較

以前使用mysql不是很多,對(duì)mysql的函數(shù)也不是很熟悉,遇到這個(gè)問題第一時(shí)間百度搜索,搜索到這兩種方法,這兩種方法是排在百度第一條的博客。

方法一,作者也說出了缺陷,就是當(dāng)日期為未來日期時(shí)結(jié)果為0,而不是負(fù)數(shù);這里使用了5個(gè)函數(shù)和兩個(gè)運(yùn)算符。

方法二,解決了方法一為負(fù)數(shù)的問題,但看起來更復(fù)雜;這里使用了6個(gè)函數(shù)和3個(gè)運(yùn)算符。

看了這篇貼子后,我就暈了,怎么會(huì)這么復(fù)雜,以前用Sql Server很簡(jiǎn)單就可以了。我堅(jiān)信一定有簡(jiǎn)單高效的方法。很快就找到了根據(jù)以上方法改良后的方法。

改良后的方法一,少了一個(gè)函數(shù)和一個(gè)運(yùn)算符,當(dāng)日期為未來日期時(shí)計(jì)算結(jié)果還是為0;

改良后的方法二,還是6個(gè)函數(shù)和3個(gè)運(yùn)算符,看起來簡(jiǎn)單些;取日期的右邊五位,當(dāng)日期格式為‘2013-01-01’時(shí)取到的是‘01-01’,沒有問題;當(dāng)日期格式為‘2013-1-1’縮寫格式時(shí),取右邊的五位取出的是‘3-1-1’,會(huì)導(dǎo)致出錯(cuò)。

然后自己根據(jù)MYSQL的幫助文檔中的日期函數(shù)想到了第三種方法:

取生日和當(dāng)前日期之前的天數(shù)除以一年的實(shí)際天數(shù)(365天5小時(shí)48分46秒),然后取整。這樣只用了三個(gè)函數(shù)和一個(gè)運(yùn)算符就搞定了。

然后,很快在國(guó)外網(wǎng)站找到了第四種方法:

這種方法只用了兩個(gè)函數(shù)就搞定了,應(yīng)該是最佳方法了。

測(cè)試了一下以上四種方法,假如當(dāng)前日期為'2017-1-13',當(dāng)生日為‘2013-1-14’時(shí),還差一天就要過生日了,離4歲只 差一天了,結(jié)果還是3歲,感覺不是很合理;把方法三改造一下,四舍五入得到方法五:

這樣計(jì)算出的年齡離實(shí)際的周歲最接近了,但可能方法四是最符合年齡定義的了。

mysql計(jì)算表中性別為女的年齡之和

終于暫時(shí)閑下來了,一個(gè)項(xiàng)目加班加點(diǎn)一年多,前面太忙就顧不上博客了,慢慢的就懈怠了,最近算是暫時(shí)閑下來了,項(xiàng)目已經(jīng)驗(yàn)收進(jìn)入后期維護(hù)階段,每天空余的時(shí)間也多了,想重新拾起博客,不求寫什么高深的東西,以后就盡量就每次自己遇到的問題,并把解決方法在這里記錄一下,可能顯得很簡(jiǎn)單不適合他人看,但是就當(dāng)自己日記一樣記錄還是不錯(cuò)的,因?yàn)樵谶@個(gè)項(xiàng)目里我有好幾次遇到類似的以前解決過的問題,卻還是要看了自己當(dāng)初的百度提問才得以解答,還是要記錄下比較好。

這次要記錄的是昨天客戶找我要一個(gè)關(guān)于注冊(cè)用戶年齡段,性別分布情況,當(dāng)時(shí)把我卡住了,等到解決了才發(fā)現(xiàn)其實(shí)這個(gè)sql我大二考試的時(shí)候就寫過,只是把以前是班級(jí)現(xiàn)在是年齡,以前是sqlserver現(xiàn)在是mysql而已,話不多說,解決過程如下:

首先,是我們數(shù)據(jù)庫(kù)的當(dāng)前內(nèi)容:

然后我們要給他最終統(tǒng)計(jì)成三個(gè)字段:年齡男女

需要的最終統(tǒng)計(jì)結(jié)果圖如下:

步驟1:我們要把先他統(tǒng)計(jì)成 年齡,性別 的結(jié)果

sql:

SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y')+0 AS age,t1.sex

FROM test t1

ORDER BY age

其結(jié)果如下:

步驟2:將上圖的結(jié)果作為臨時(shí)表,再統(tǒng)計(jì)成最終結(jié)果圖

sql:

SELECT CONCAT(age,'歲') AS '年齡',SUM(CASE WHEN sex='男' THEN 1 ELSE 0 END) AS '男',SUM(CASE WHEN sex='女' THEN 1 ELSE 0 END) AS '女'

FROM

(

SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y')+0 AS age,t1.sex

FROM test t1

ORDER BY age

) AS tt

GROUP BY age

分享標(biāo)題:怎么使mysql計(jì)算年齡 mysql求年齡
本文網(wǎng)址:http://muchs.cn/article16/ddijigg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、定制開發(fā)、搜索引擎優(yōu)化網(wǎng)站改版、做網(wǎng)站、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管