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

成都創(chuàng)新互聯(lián)從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元信陽做網(wǎng)站,已為上家服務(wù),為信陽各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
方法一,作者也說出了缺陷,就是當(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)信一定有簡單高效的方法。很快就找到了根據(jù)以上方法改良后的方法。
改良后的方法一,少了一個(gè)函數(shù)和一個(gè)運(yùn)算符,當(dāng)日期為未來日期時(shí)計(jì)算結(jié)果還是為0;
改良后的方法二,還是6個(gè)函數(shù)和3個(gè)運(yù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)算符就搞定了。
然后,很快在國外網(wǎng)站找到了第四種方法:
這種方法只用了兩個(gè)函數(shù)就搞定了,應(yīng)該是最佳方法了。
測試了一下以上四種方法,假如當(dāng)前日期為'2017-1-13',當(dāng)生日為‘2013-1-14’時(shí),還差一天就要過生日了,離4歲只 差一天了,結(jié)果還是3歲,感覺不是很合理;把方法三改造一下,四舍五入得到方法五:
這樣計(jì)算出的年齡離實(shí)際的周歲最接近了,但可能方法四是最符合年齡定義的了。
語句為:SELECT FLOOR(DATEDIFF(CURRENT_DATE,'1984-2-16')/356)
常用sql對(duì)數(shù)據(jù)庫操作:
連接數(shù)據(jù)庫命令:?mysql -u root -p密碼
創(chuàng)建數(shù)據(jù)庫:create database dbname;
查看所有的數(shù)據(jù)庫:show databases;
刪除數(shù)據(jù)庫:?drop database dbname;
切換數(shù)據(jù)庫:use dbname;
知識(shí)拓展:
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),目前屬于?Oracle?旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件。
不知道你的語句報(bào)什么錯(cuò),我認(rèn)為你不應(yīng)該使用right來取日期里面的你、月、日,應(yīng)該使用YEAR、MONTH、DAY函數(shù)
另外,你不能使用SELECT后面的別名作為WHERE的條件,必須使用數(shù)據(jù)庫表的字段作為條件,你要獲取65歲以上的可以使用這樣:
WHERE csrqMAKEDATE(YEAR(NOW())-65, DAYOFYEAR(NOW()))
SELECT DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(SBIRTHDAY, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d')
DATE_FORMAT(SBIRTHDAY, '00-%m-%d')) AS age from student; 查出精確。。。。自己加名字
報(bào)錯(cuò)是因?yàn)?沒有這個(gè)方法
可能的原因是 1 方法是自定義的 你當(dāng)前數(shù)據(jù)庫中沒有寫入這個(gè)方法
2 這個(gè)方法是官方的但是 版本號(hào)不同 這個(gè)方法被取消了
解決的方法 1 寫入這個(gè)方法調(diào)用 2 更換 對(duì)應(yīng)版本的 mysql
1、計(jì)算年齡其實(shí)就是計(jì)算當(dāng)前日期和出生日期之間的差值
2、SQL計(jì)算時(shí)間差值使用的函數(shù)是:Datediff()
定義和用法:
DATEDIFF() 函數(shù)返回兩個(gè)日期之間的天數(shù)。
語法:
DATEDIFF(datepart,startdate,enddate)
startdate 和 enddate 參數(shù)是合法的日期表達(dá)式。
datepart 參數(shù)可以是下列的值:
datepart--縮寫
年--yy或yyyy
季度--qq或q
月--mm或m
年中的日--dy或y
日--dd或d
周--wk或ww
星期--dw或w
小時(shí)--hh
分鐘--mi或n
秒--ss或s
毫秒--ms
微妙--mcs
納秒--ns
示例:
SELECT?DATEDIFF(day,'2008-12-29','2008-12-30')?AS?DiffDate
結(jié)果:
DiffDate
1
3、那么依據(jù)出生日期計(jì)算年齡就可以這么寫(假設(shè)表名為table_1,出生日期列為:BirthDate_col):
select?
datediff(yy,BirthDate_col,getdate())?as?周歲
,(datediff(yy,BirthDate_col,getdate())+1)?as?虛歲
from?
table_1
本文題目:mysql怎么計(jì)算周歲,mysql用出生日期計(jì)算年齡
當(dāng)前鏈接:http://chinadenli.net/article34/dsejgpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站營銷、品牌網(wǎng)站設(shè)計(jì)、做網(wǎng)站、App開發(fā)、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)