如何查找当前一周和下个星期天的MySQL数据?
给定日期(例如Wednesday 5/18/11),它将显示从上个周日到下个周日的事件。从5/15/11到5/22/11。
诀窍是找到给定日期的“上一个”星期天。
如何做到这一点?
发布于 2011-05-19 00:23:54
SELECT *
FROM events
WHERE Yearweek(`eventdate`) = Yearweek(NOW())
OR ( Weekday(NOW()) = 6
AND Yearweek(`eventdate`) = Yearweek(
DATE_SUB(NOW(), INTERVAL 1 DAY)) ) 发布于 2011-05-19 04:27:28
根据奔腾的回答,经过一些调整...
SELECT
*
FROM
Events
WHERE
YEARWEEK(`eventdate`) = YEARWEEK(NOW()) OR
(
WEEKDAY(`eventdate`) = 6 AND
YEARWEEK(`eventdate`) = YEARWEEK(NOW()) + 1
)这可能需要根据工作日的值进行调整(是否为6个星期日?)。
此外,虽然这应该是可行的,但我猜测mySQL将无法使用此方法的eventdate列上的任何索引。可能更好的方法是找到相邻周日的实际日期,然后执行better或<= >=。这应该允许在eventdate上使用索引。即使您现在没有索引,将来也可能需要一个索引。
发布于 2011-05-19 07:32:55
使用日历表格。。。
select cal_date
from calendar
where cal_date between
(select max(cal_date) from calendar
where cal_date <= '2011-05-15' and day_of_week = 'Sun') and
(select min(cal_date) from calendar
where cal_date > '2011-05-15' and day_of_week = 'Sun') 如果给定的日期是星期天,则不清楚您想要什么。前面的查询返回15行,给定日期在星期天。它返回所有其他日期的8行。您可以调整WHERE子句中的比较运算符以获得所需的行为。
我早些时候发布了code for a calendar table。这是针对PostgreSQL的,但您应该能够毫不费力地将其适应于MySQL。
https://stackoverflow.com/questions/6047810
复制相似问题