原始数据
查询接下来生日的十条数据(推荐使用)
sql语句(last_days表示距离生日的天数)
SELECT
*,
(
366 + DAYOFYEAR('生日字段名') - DAYOFYEAR(NOW())
) % 366 AS last_days
FROM
'表名'
WHERE
'生日字段名' IS NOT NULL
ORDER BY
last_days
LIMIT 10
效果(我当天日期为2022-11-30)
查询接下来7天数内过生日的数据(包含今天)
sql语句(sql中的数字就是查询的任意天数)
SELECT
*
FROM
'表名'
WHERE
DATE_FORMAT('生日日期字段', '%m-%d') >= DATE_FORMAT(NOW(), '%m-%d')
AND DATE_FORMAT('生日日期字段', '%m-%d') <= DATE_FORMAT(
(NOW() + INTERVAL + 7 DAY),
'%m-%d'
)
效果(我当天日期为2022-11-30)
查询本周内生日的数据
sql语句
SELECT
*
FROM
'表名'
WHERE
WEEK (
DATE_FORMAT(NOW(), '%Y%m%d'),
1
) = WEEK (
str_to_date(
concat(
DATE_FORMAT(NOW(), '%Y'),
DATE_FORMAT('生日字段名', '%m%d')
),
'%Y%m%d'
),
1
)
效果(我当天日期为2022-11-30,周三)
查询下周内生日的数据
sql语句
SELECT
*
FROM
'表名'
WHERE
WEEK (
DATE_FORMAT(NOW(), '%Y%m%d'),
1
) + 1 = WEEK (
str_to_date(
concat(
DATE_FORMAT(NOW(), '%Y'),
DATE_FORMAT('生日字段名', '%m%d')
),
'%Y%m%d'
),
1
)
效果(我当天日期为2022-11-30,周三)