如何在Mysql中在不同年份的数周之间获取数据
答
尝试这种查询可以解决你的问题。
SELECT *
FROM TABLE
WHERE (WEEK(date)>=52 AND YEAR(date)=2015) OR
(WEEK(date)<=2 AND YEAR(date)=2016);
+0
感谢您的快速响应,我会试试这个,并让你知道,如果它解决我的问题 –
+0
这解决了我的问题 –
答
这是一个替代解决方案,您不需要在数据库中记录周数,看到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");
只需要为 – amdixon
@NSNoob日期栏如果你'flag'问题为重复那么它必须包含可接受的答案。 – Sadikhasan
@Sadikhasan问题是关于在两个日期范围(2015年第52周开始日期和2016年第2周结束日期)之间取数据。他在数据库设计方面存在问题(在日期和星期中使用多列),但他们并没有像我看到的那样使他的问题变得独特。 – NSNoob