Mysql 选择仅使用日和月的未来7天
我有一个表,其中包含生日,格式为YYYY-MM-DD。我的目标是如果生日在接下来的7天内返回结果 我需要它只使用月份和日期,因为如果它也读取年份,那么1993年的生日永远不会在接下来的7天内。它还需要考虑到月份的变化 例如,如果是2月28日,表中的生日是3月1日,那么这将是7天内,但不是同一个月内Mysql 选择仅使用日和月的未来7天,mysql,date-arithmetic,Mysql,Date Arithmetic,我有一个表,其中包含生日,格式为YYYY-MM-DD。我的目标是如果生日在接下来的7天内返回结果 我需要它只使用月份和日期,因为如果它也读取年份,那么1993年的生日永远不会在接下来的7天内。它还需要考虑到月份的变化 例如,如果是2月28日,表中的生日是3月1日,那么这将是7天内,但不是同一个月内 SELECT * FROM user WHERE DATE_FORMAT(birthday, '%m-%d') >= DATE_FORMAT(NOW() - INTERVAL 7 DAY, '%
SELECT * FROM user WHERE DATE_FORMAT(birthday, '%m-%d') >= DATE_FORMAT(NOW() - INTERVAL 7 DAY, '%m-%d')
这就是我目前所处的位置,但我知道我离这里很远。您需要在where子句中设置两个日期的格式
SELECT *
FROM user
WHERE DATE_FORMAT(birthday, '%m-%d') BETWEEN DATE_FORMAT(NOW(), '%m-%d') AND DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 7 DAY), '%m-%d')
检索带有年份的当前年份(CURDATE(),使日期biy与生日后的月份和日期串联,并删除7天,检查CURDATE是否在以下范围内:
select *
from user
where
Curdate() between date_sub(CONCAT(YEAR(CURDATE()),'-', date_format(birthday, '%m-%d')), interval 7 day)
and CONCAT(YEAR(CURDATE()),'-', date_format(birthday, '%m-%d')) ;
从今天的日期开始取年份部分,并将其与dob列值的月和日部分连接。然后将该字符串转换为日期。然后将其用作子查询,并检查新列的日差是否介于0和7之间 查询
SELECT t.* -- select except the `new_col`
FROM (SELECT *,
CAST((Concat(YEAR(NOW()), '-', DATE_FORMAT(dob, '%m-%d'))) AS DATE
) AS
`new_col`
FROM `user`)t
WHERE DATEDIFF(t.`new_col`, NOW()) BETWEEN 0 AND 7;
为什么不使用date\u add,然后使用between来获取您的值呢?
从date1和date2之间的日期表中选择*?非常感谢!这也适用于月结转吗?您正在比较字符串,它适用于月结转,但不适用于年底(例如,如果现在返回12月27日)