gpt4 book ai didi

MySQL 查询 : Is there a better way to get users who are X years old or older based on birth_date date field

转载 作者:可可西里 更新时间:2023-11-01 08:11:26 26 4
gpt4 key购买 nike

我目前将用户的出生日期存储为 DATE 字段,默认值为 0000-00-00

例如,我使用此查询来获取 30 岁或以上的用户。

SELECT * 
FROM myUsers
WHERE birth_date != '0000-00-00'
AND DATE(birth_date) < DATE( DATE_SUB( NOW() , INTERVAL 30 YEAR ) )
ORDER BY user_id desc LIMIT 0,10

这是获得我想要的结果的正确 sql 查询吗? (获取年龄大于或刚好 30 岁的用户)它是否可以改进/优化?

最佳答案

它并不总是错误的,但我不喜欢用 0000-00-00 存储日期作为默认值,请使用 NULL 代替(除非它有特殊含义,并且您必须将其与 NULL 区分开来)。

那么你正在使用 DATE()函数从日期时间字段中删除时间信息,但由于 birth_date不是日期时间字段,没有理由使用它。这可以使用索引(如果存在)。

然后您可以只使用此查询:

SELECT   * 
FROM myUsers
WHERE birth_date <= CURRENT_DATE()-INTERVAL 30 YEAR
ORDER BY user_id DESC
LIMIT 0,10

(如果默认值为 NULL,则无需检查)。只需决定是否要使用 <<=但我更喜欢后者,因为它会包括生日那天的人。

然后在 birth_date 和 user_id 字段上建立索引是个好主意。

关于MySQL 查询 : Is there a better way to get users who are X years old or older based on birth_date date field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32587401/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com