mysql -从当前周获取生日

ih99xse1  于 5个月前  发布在  Mysql
关注(0)|答案(2)|浏览(78)

我想找到所有的人,他们的生日在当前一周。
例如,我们现在是星期二,所以我想要从昨天(星期一)到星期天的所有生日。
我尝试了以下查询:

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

字符串
但这并没有给我正确的数据,因为我也ge记录了出生日期是1975-03-29,这是下周,而不是本周。

de90aj5v

de90aj5v1#

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

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);


演示:http://rextester.com/GCC50147
02/29仍然有一个问题。这个查询会“说”今年的生日是02/28。虽然它可能应该是03/01。要解决这个问题,你可以使用以下“技巧”:

SELECT e.*, birthdate - INTERVAL 1 DAY + INTERVAL (YEAR(NOW()) - YEAR(birthdate)) YEAR + INTERVAL 1 DAY
FROM employees e;


演示:http://rextester.com/WHI96898

dvtswwa3

dvtswwa32#

SELECT 
 nama , 
 tanggal_lahir 
FROM 
 m_pasien 
WHERE 
 MONTH(tanggal_lahir) = MONTH(CURDATE()) AND 
 DAY(tanggal_lahir) >= DAY(CURDATE()) AND 
 DAY(tanggal_lahir) <= DATE_ADD(CURDATE(), INTERVAL 7 DAY);

字符串

相关问题