【问题标题】:mysql select only next week datamysql 只选择下周数据
【发布时间】:2011-07-12 21:38:34
【问题描述】:

我的数据库中有一个日期字段,即film_release_date。

那么从表中获取下周数据的mysql查询是什么。

我运行了这个查询,但它不能正常工作。

SELECT 
    *,
    DATE_FORMAT(film_release_date,'%e-%b-%Y') AS release_date 
FROM gf_film 
WHERE 
    MONTH(film_release_date)=MONTH(CURRENT_DATE) 
    AND YEAR(film_release_date)=YEAR(CURRENT_DATE) 
    AND film_release_date>=(CURRENT_DATE) 
ORDER BY film_release_date DESC 

实际上它是用于电影网站的,我的数据库中有几部电影,所以我需要一个查询来获取下周每一部电影,这意味着下周上映的电影意味着下周五。如果我今天运行它,即 13,那么它会显示所有电影在 15 到 22 之间,如果在 15 到 22 之间运行,那么它会显示从 22 到 29 的数据

【问题讨论】:

  • 定义'不能正常工作'
  • 是的,查询不获取下周数据实际上是从每个星期五开始的一周

标签: php mysql


【解决方案1】:
set @d := date_add(CURRENT_DATE, interval 7 day);
set @week_start := @d - interval (dayofweek(@d) + 1) day;
set @week_end := @d + interval (6 - dayofweek(@d)) day;
SELECT *,
       DATE_FORMAT(film_release_date,'%e-%b-%Y') AS release_date
FROM gf_film
WHERE film_release_date between @week_start and @week_end
ORDER BY film_release_date DESC

【讨论】:

    【解决方案2】:

    要获得下周的数据,您可以简单地应用以下逻辑:

    SELECT something FROM tbl_name
        -> WHERE DATE_SUB(CURDATE(),INTERVAL 7 DAYS)
    

    REFERENCE

    【讨论】:

    • 收听周从每个星期五开始。我已经明确提到了与电影相关的数据,所以如果我在 monady 上运行此查询,那么它应该返回将在下周五之后发布的数据
    • @pravat,顺便说一句,每周只有 1 个星期五
    • 是的,我知道我只需要知道如果我在周五到周五之间运行这个查询,那么它应该从周五到下周五返回数据,你明白吗??
    【解决方案3】:

    有点晚了,但没有一个答案能正常工作。您可以使用 yearweek 函数获取一年中的周数。所以你得到现在(本周)或 now() + 间隔 7 天的周数来获得下周。例子:

    本周

    SELECT *, DATE_FORMAT(film_release_date,'%e-%b-%Y') AS release_date 
      FROM gf_film 
    
    WHERE YEARWEEK(film_release_date) = YEARWEEK(NOW())
    
    ORDER BY film_release_date DESC 
    

    下周

    SELECT *, DATE_FORMAT(film_release_date,'%e-%b-%Y') AS release_date 
      FROM gf_film 
    
    WHERE YEARWEEK(film_release_date) = YEARWEEK(NOW() + INTERVAL 7 DAY)
    
    ORDER BY film_release_date DESC 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-31
      相关资源
      最近更新 更多