如何在Mysql中的不同年份的几周之间获取数据

时间:2015-12-30 05:32:24

标签: php mysql

在我的表格中有一个用于周和日期的列。如何在2015 52到2016 2之间获取数据。 抱歉我的英语不好:(

2 个答案:

答案 0 :(得分:5)

尝试此查询可以解决您的问题。

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

答案 1 :(得分:1)

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

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

$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");