上次星期一和下个星期日之间的MySQL日期
我正在查找所有在上一个星期一和下一个星期日之间的预订日期在MySQL中的记录。上次星期一和下个星期日之间的MySQL日期
到目前为止,我有:
SELECT firstname
, lastname
, sessions
, (SELECT COUNT(memberid)
FROM bookings
WHERE m.memberid = b.memberid
and b.date between lastMonday and nextSunday) as sessionsused
from members
我在寻找什么,代入lastmonday和nextsunday
任何帮助,非常感谢!
MySQL的YEARWEEK()
函数为每周选择一个唯一值,您可以将其用于比较。它需要a second parameter它指定星期从星期日(0)或星期一(1)开始。
SELECT COUNT(memberid)
FROM bookings
WHERE m.memberid = b.memberid
AND YEARWEEK(b.date, 1) = YEARWEEK(NOW(), 1);
这将始终选择行,其中b.date
是在本周。对于过去的某个特定的一周,请更改NOW()
以查看您需要的任何日期表达式。
对于您的星期不是在星期天或星期一开始的更一般情况,您需要稍微复杂一点的逻辑。在这里,您可以用@weekday
代替周数开始的日期,2 =周二,3 =周三,4 =周四,5 =周五,6 =周六。
SELECT COUNT(memberid)
FROM bookings
WHERE m.memberid = b.memberid
AND DATE(b.date)
BETWEEN DATE_SUB(DATE(NOW()), INTERVAL (WEEKDAY(NOW()) - @weekday + 7) % 7 DAY)
AND DATE_ADD(DATE(NOW()), INTERVAL 6 - (WEEKDAY(NOW()) - @weekday + 7) % 7 DAY);
感谢@Matt会不会动态改变? –
另外,如果一天是星期一,今天会选择吗? –
它将始终从**当前**周选择项目,如果今天是星期一,则将仅选择今天的项目。我意识到有一个更简单的方法,并用新的语法编辑答案。 –
是的,可以。我们怎么知道? – Strawberry
“lastmonday”是指最近的星期一,还是本周之前一周的星期一(在这种情况下哪一天是星期开始的)?即如果今天是星期一,今天是“lastmonday”还是一周前的“lastmonday”?如果今天是星期二是昨天还是8天前的lastmonday? –
@Strawberry - 你是什么意思? –