**名稱 user, 字段 id, *** ( m 表示男, f表示 女), birthday出生日期, 沒有 age欄位
其中round(datediff(curdate(), birthday)/365.2422)
是獲得 年齡
case when的格式是:
case
when ( 條件) then 結果
when ( 條件) then 結果
when ( 條件) then 結果
end
select nnd as agerange,***,count(*) as count from(
select
case
when round(datediff(curdate(), people_birthday)/365.2422) >= 0
and round(datediff(curdate(), people_birthday)/365.2422) <= 12 then '0-12歲'
when round(datediff(curdate(), people_birthday)/365.2422) >= 13
and round(datediff(curdate(), people_birthday)/365.2422) <= 17 then '13-17歲'
when round(datediff(curdate(), people_birthday)/365.2422) >= 18
and round(datediff(curdate(), people_birthday)/365.2422) <= 22 then '18-22歲'
when round(datediff(curdate(), people_birthday)/365.2422) >= 23
and round(datediff(curdate(), people_birthday)/365.2422) <= 30 then '23-30歲'
when round(datediff(curdate(), people_birthday)/365.2422) >= 31
and round(datediff(curdate(), people_birthday)/365.2422) <= 59 then '31-59歲'
when round(datediff(curdate(), people_birthday)/365.2422) >= 60 then '60歲以上'
end as nnd
,people_*** as ***
from people_info_sync
) a group by nnd,***;
結果:
存在的缺點: 因為是使用 group by的方法, 所以如果沒有記錄的話, 是不會返回資料的,
除非你用 left join 新建一張表來存 「0-12歲」,「13-17歲」,「18-22歲」,「23-30歲」,「31-59歲」,"60歲以上"這些資料, 然後使用 左連線 left join , 這樣就能保證一定會有這些資料。。。但你的組長是無論如何也不會允許你這麼幹的哈哈。。
寫了乙個後台處理的方法, 可以參考下
/**
* sql查詢使用group by方法,如果資料庫本身沒有那條記錄的話,就不會返回相應的總數,所以需要定死陣列,再通過遍歷的方式去查詢
* @return
*/public listcountage() 了,要和你資料庫查出來的結果一樣才行
string ***arr = new string;
string agearr = new string;
//從資料庫獲得資料, 這個countage()方法要自己寫,就執行上面的sql語句
listdatalist = peopleinfosyncdao.countage();
//首先初始化
listcountagedtolist = new arraylist<>();
for(string *** : ***arr)}}
countagedtolist.add(countagedto);}}
return countagedtolist;
}
其中countagedto是:
public class countagedto
public void setcount(long count)
public string getagerange()
public void setagerange(string agerange)
public string get***()
public void set***(string ***)
@override
public string tostring() ';}}
mysql根據出生日期計算年齡
select date format from days to days now to days birthday y 0 as age方法一,作者也說出了缺陷,就是當日期為未來日期時結果為0,而不是負數 這裡使用了5個函式和兩個運算子。select date format now y date f...
根據出生日期計算距離生日時間
具體使用根據情況大家自己調整,此處僅供參考。根據出生日期計算生日天數 jxcore.birthwarm function value,fieldctl var dd eval new birth.substr 1,birth.length 2 var ar date dd.getmonth 1,dd...
SQL Server 根據出生日期計算年齡
getdate 函式用於返回當前的日期和時間 datediff 函式返回兩個日期之間的時間。語法 datediff datepart,startdate,enddate startdate 和 enddate 引數是合法的日期表示式。datepart 引數可以是下列的值 datepart縮寫年 yy...