Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql-从当前周获取生日_Mysql - Fatal编程技术网

mysql-从当前周获取生日

mysql-从当前周获取生日,mysql,Mysql,我想找到所有在本周过生日的人 例如,我们现在是星期二,所以我想要从昨天(星期一)到星期天的所有生日 我尝试了以下查询: SELECT * FROM `employees` WHERE WEEK( birthdate ) = WEEK( NOW() ) 但这并没有给我提供正确的数据,因为我还记录了出生日期为1975-03-29的地方,即下周而不是本周。您需要将年份差异添加到生日中: SELECT * FROM `employees` WHERE WEEK(NOW()) = WEEK( bir

我想找到所有在本周过生日的人

例如,我们现在是星期二,所以我想要从昨天(星期一)到星期天的所有生日

我尝试了以下查询:

SELECT * FROM `employees` WHERE WEEK( birthdate ) = WEEK( NOW() )

但这并没有给我提供正确的数据,因为我还记录了出生日期为1975-03-29的地方,即下周而不是本周。

您需要将年份差异添加到生日中:

SELECT * 
FROM `employees` 
WHERE WEEK(NOW()) = WEEK( birthdate + INTERVAL (YEAR(NOW()) - YEAR(birthday)) YEAR )
但这在今年的第一周和最后一周都不会正常工作。因此,您需要计算本周星期一和星期日的日期

今年生日:

SELECT e.*, birthdate + INTERVAL (YEAR(NOW()) - YEAR(birthdate)) YEAR
FROM employees e;
本周星期一:

SELECT DATE(now() - INTERVAL WEEKDAY(NOW()) DAY);
本周星期日:

SELECT DATE(NOW() + INTERVAL 6 - WEEKDAY(NOW()) DAY);
最后查询:

SELECT *
FROM employees
WHERE DATE(birthdate + INTERVAL (YEAR(NOW()) - YEAR(birthdate)) YEAR)
      BETWEEN
      DATE(NOW() - INTERVAL WEEKDAY(NOW()) DAY)
      AND
      DATE(NOW() + INTERVAL 6 - WEEKDAY(NOW()) DAY);
演示:

2月29日仍然存在一个问题。这个查询将“说”今年的生日是02/28。而它可能会在03/01。要解决该问题,您可以使用以下“技巧”:


演示:

效果非常好。太好了!
SELECT e.*, birthdate - INTERVAL 1 DAY + INTERVAL (YEAR(NOW()) - YEAR(birthdate)) YEAR + INTERVAL 1 DAY
FROM employees e;