【问题标题】:How to fetch data between weeks in different year in Mysql [duplicate]如何在Mysql中在不同年份的几周之间获取数据[重复]
【发布时间】:2015-12-30 05:32:24
【问题描述】:

在我的表格中有一个星期和日期的列。如何获取 2015 week 52 到 2016 week 2 之间的数据。 对不起我的英语不好:(

【问题讨论】:

  • 只需要日期列
  • @NSNoob 如果您的flag 问题重复,那么它必须包含可接受的答案。
  • @Sadikhasan 问题是关于在两个日期范围之间获取数据(2015 年第 52 周的开始日期和 2016 年第 2 周的结束日期)。他的数据库设计存在问题(使用多列表示日期和星期),但在我看来,这并没有使他的问题独一无二。
  • @NSNoob 但是您提供的链接不包含可接受的答案。我们怎么能相信这个答案?
  • @Sadikhasan 你的意思是“接受”的答案吗? JKMurphy 的回答对我来说似乎足够接受,但我又一次从大学开始就没有使用过 SQL。也许你应该用一个你认为包含“可接受”答案的问题将其标记为重复,因为在这方面你显然比我更有资格:) 很确定必须有很多问题要求在 SO 的日期范围之间获取数据。

标签: php mysql


【解决方案1】:

试试这个查询,它可能会解决您的问题。

SELECT *
FROM TABLE
WHERE (WEEK(date)>=52 AND YEAR(date)=2015) OR 
      (WEEK(date)<=2 AND YEAR(date)=2016);

【讨论】:

  • 感谢您的快速回复,我会试试这个,如果它解决了我的问题,请告诉您
  • 这解决了我的问题
  • 也解决了我的问题。谢谢你的回答:)
【解决方案2】:

这是一种替代解决方案,您无需在数据库中记录周数,因为 Sadikhassan 已经为 OP 的原始请求提供了解决方案

无需为您的周数维护单独的列。只需记录日期并丢失周数列。由于您使用 PHP 作为前端,因此您可以使用此方法从所需的周数和年份中获取 Date。

$range_start = new DateTime();
$range_start->setISODate($year,$week_no);//give 2015 and 52 here
echo $range_start->format('d-M-Y'); // 21 DEC 2015


$range_end = new DateTime();
$range_end->setISODate($year,$week_no);//give 2016 and 2 here
echo $range_end->format('d-M-Y'); //11 January 2016

//IDK if this is necessary because I don't work in PHP but I am gonna convert it to strings
$start_date_str = $range_start->format('d-M-Y');
$end_date_str = $range_end->format('d-M-Y');

现在您已经获得了各自的开始日期和结束日期,您可以使用它们进行简单的查询:

$result = mysql_query("SELECT * FROM YOURTABLE WHERE date >= '" . $start_date_str . "' AND date <= '" . $end_date_str . "' ORDER by id DESC");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多