我试图从客户生日在现在到一周之间的数据库中获取记录。我已经尝试了很多选择,并且正在搜索一个多小时,但是找不到有效的解决方案。我正在使用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] 删除。
我来说两句