簡體   English   中英

MySQL查詢以獲取出生日期的年齡

[英]MySQL Query to get age from date of birth

我的查詢有問題,

SELECT id, pseudo, nom, prenom, sexe, ville, 
       FLOOR(DATEDIFF (NOW(), date_naissance)/365) AS mAge 
FROM user 
WHERE sexe = 'Homme' AND mAge BETWEEN 18 AND 25 OR ville = 'Bordeaux'

應該使用where條件返回匹配的用戶。 問題如下,mAge不存在,出現以下錯誤:

1054-“ where子句”中的未知列“ mAge”

看起來我的別名在where條件下無法正常工作。

如果刪除了mAge WHERE條款,則可以成功獲取mAge別名。

我需要你們

提前致謝 !

您不能在WHERE子句中使用列別名: http : //dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html

您將不得不重新考慮您的查詢或更改為:

SELECT id, pseudo, nom, prenom, sexe, ville, 
   FLOOR(DATEDIFF (NOW(), date_naissance)/365) AS mAge 
FROM user 
WHERE sexe = 'Homme' AND 
FLOOR(DATEDIFF (NOW(), date_naissance)/365) BETWEEN 18 AND 25 
OR ville = 'Bordeaux'

PS,您可能還希望了解AND和OR,也可能希望添加一些方括號。

我使用此查詢來獲取用戶的年齡(年和月)

SELECT 
username
,date_of_birth
,(PERIOD_DIFF( DATE_FORMAT(CURDATE(), '%Y%m') , DATE_FORMAT(date_of_birth, '%Y%m') )) DIV 12 AS years
,(PERIOD_DIFF( DATE_FORMAT(CURDATE(), '%Y%m') , DATE_FORMAT(date_of_birth, '%Y%m') )) MOD 12 AS months
FROM users

截至今天的結果:

chucknorris, 1979-04-10 00:00:00, 35, 2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM