簡體   English   中英

mysql如何選擇按年齡條件記錄

[英]mysql how to select records where condition by age

我正在使用查詢,需要從年齡介於(多個年齡)之間的用戶中選擇行

像我在3個表的表用戶中有3個用戶:

ID | NAME | DOB

1 | A | 1980年12月6日
2 | B | 1970年12月12日
3 | C | 1990年6月12日
4 | D | 1995年12月6日
5 | E | 1985年12月6日

現在,如果我想將25位以下的用戶列表輸出

NAME | 出生日期

C | 1990年6月12日
D | 1995年12月6日

對這個想法有什么疑問呢?

SELECT * FROM users WHERE DOB 

任何想法

嘗試這個 ::

SELECT * FROM users WHERE DATEDIFF(CURDATE(), DOB)/365<25 

要獲得年齡(歲):

SELECT 
FLOOR(tempUsers.t/365) as `years`
tempUsers.t%365 as `months`
from
(
 SELECT DATEDIFF(CURDATE(), DOB) t FROM users 
) tempUsers
select *
from users
where DOB >= ADDDATE(CURRENT_DATE(), INTERVAL -25 YEAR);

您可以這樣做:

SELECT * FROM users WHERE DOB >= (CURDATE() - INTERVAL 25 YEAR)

要從dateofbirth date字段中計算上述25個查詢,方法如下:

SELECT * FROM users 
WHERE DOB >= (CURDATE() - INTERVAL FLOOR(DATEDIFF(CURDATE(),dateofbirth)/365) YEAR)

我會用這個:

select id, name, dob,
  date_format(curdate(), '%Y') - date_format(dob, '%Y') - 
  (date_format(curdate(), '00-%m-%d') < date_format(dob, '00-%m-%d')) as age
from users

它比除以365更精確。 這給2001年是錯誤的

SELECT floor(DATEDIFF('4012-12-12', '2012-12-12')/365)

雖然這給出了2000是正確的:

select
  date_format('4012-12-12', '%Y') - date_format('2012-12-12', '%Y') - 
  (date_format('4012-12-12', '00-%m-%d') < date_format('2012-12-12', '00-%m-%d'))

但是,如果您只需要計算年齡,則這兩種解決方案都應該有效。

暫無
暫無

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

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