从现在到一周之间,从客户那里获得生日

斯坦·范·赫特姆

我试图从客户生日在现在到一周之间的数据库中获取记录。我已经尝试了很多选择,并且正在搜索一个多小时,但是找不到有效的解决方案。我正在使用MYSQL 5.7.19。这是我的查询

SELECT firstname, lastname, IF(housenumber_addition = "", CONCAT(housenumber,housenumber_addition ), housenumber_addition ) AS adres, sex
FROM customer
WHERE DATE(birthdate) BETWEEN NOW() AND NOW() + INTERVAL 7 DAY

数据数据图片:结构图片:结构体

在荷兰:(如果生日在现在和一周之间,我还需要从客户那里获得新的年龄

希望有人能给我一个很好的工作答案

提前致谢

缺口

您的问题是生日不是当前年份,因此您的测验不可能正确。您需要将出生日期转换为当年的值,您可以通过以下方式进行操作:

STR_TO_DATE(CONCAT(YEAR(NOW()), '-', MONTH(birthdate), '-', DAY(birthdate)), '%Y-%m-%d')

因此,您的查询变为:

SELECT firstname, lastname, IF(housenumber_addition = "", CONCAT(housenumber,housenumber_addition ), housenumber_addition ) AS adres, sex
FROM customer
WHERE STR_TO_DATE(CONCAT(YEAR(NOW()), '-', MONTH(birthdate), '-', DAY(birthdate)), '%Y-%m-%d') BETWEEN NOW() AND NOW() + INTERVAL 7 DAY

更新资料

正如@GordonLinoff所指出的,如果一周与年末重叠并且出生日期是在一月初(例如NOW()='2018-12-28'和birthdate ='1985-01-02'),则此操作无效)。为了使这种情况下工作,这是必要的也是检查的出生日期YEAR(NOW())+1,即

SELECT firstname, lastname, IF(housenumber_addition = "", CONCAT(housenumber,housenumber_addition ), housenumber_addition ) AS adres, sex
FROM customer
WHERE STR_TO_DATE(CONCAT(YEAR(NOW()), '-', MONTH(birthdate), '-', DAY(birthdate)), '%Y-%m-%d') BETWEEN NOW() AND NOW() + INTERVAL 7 DAY OR
    STR_TO_DATE(CONCAT(YEAR(NOW())+1, '-', MONTH(birthdate), '-', DAY(birthdate)), '%Y-%m-%d') BETWEEN NOW() AND NOW() + INTERVAL 7 DAY

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章