首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找上个星期天到下个星期天的事件

问查找上个星期天到下个星期天的事件
EN

Stack Overflow用户
提问于 2011-05-19 00:16:56
回答 3查看 655关注 0票数 3

如何查找当前一周和下个星期天的MySQL数据?

给定日期(例如Wednesday 5/18/11),它将显示从上个周日到下个周日的事件。从5/15/11到5/22/11。

诀窍是找到给定日期的“上一个”星期天。

如何做到这一点?

EN

回答 3

Stack Overflow用户

发布于 2011-05-19 00:23:54

代码语言:javascript
复制
SELECT * 
FROM   events 
WHERE  Yearweek(`eventdate`) = Yearweek(NOW()) 
        OR ( Weekday(NOW()) = 6 
             AND Yearweek(`eventdate`) = Yearweek( 
                 DATE_SUB(NOW(), INTERVAL 1 DAY)) ) 
票数 2
EN

Stack Overflow用户

发布于 2011-05-19 04:27:28

根据奔腾的回答,经过一些调整...

代码语言:javascript
复制
SELECT
    *
FROM
    Events
WHERE
    YEARWEEK(`eventdate`) = YEARWEEK(NOW()) OR
    (
        WEEKDAY(`eventdate`) = 6 AND
        YEARWEEK(`eventdate`) = YEARWEEK(NOW()) + 1
    )

这可能需要根据工作日的值进行调整(是否为6个星期日?)。

此外,虽然这应该是可行的,但我猜测mySQL将无法使用此方法的eventdate列上的任何索引。可能更好的方法是找到相邻周日的实际日期,然后执行better或<= >=。这应该允许在eventdate上使用索引。即使您现在没有索引,将来也可能需要一个索引。

票数 0
EN

Stack Overflow用户

发布于 2011-05-19 07:32:55

使用日历表格。。。

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6047810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档