2015-12-30 78 views
-1

在我的表中有一个星期和日期的列。我怎样才能到2015年间每周取数据 52年至2016年 2. 对不起我的英语不好:(如何在Mysql中在不同年份的数周之间获取数据

+3

只需要为 – amdixon

+0

@NSNoob日期栏如果你'flag'问题为重复那么它必须包含可接受的答案。 – Sadikhasan

+0

@Sadikhasan问题是关于在两个日期范围(2015年第52周开始日期和2016年第2周结束日期)之间取数据。他在数据库设计方面存在问题(在日期和星期中使用多列),但他们并没有像我看到的那样使他的问题变得独特。 – NSNoob

回答

5

尝试这种查询可以解决你的问题。

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

感谢您的快速响应,我会试试这个,并让你知道,如果它解决我的问题 –

+0

这解决了我的问题 –

1

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

没有必要mai为您的周数添加一个单独的列。只需保留日期记录并丢失周数栏。由于您使用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"); 
相关问题