2015-12-30 2 views
-1

В моей таблице есть столбец для недели и даты. Как я могу получить данные в период с 2015 неделю 52 до 2016 неделю 2. извините за мой плохой английский :(Как получить данные между неделями в разном году в Mysql

+3

нужен только дату столбец для этого – amdixon

+0

@NSNoob Если вы 'flag' вопрос как дубликат то он должен содержать приемлемый ответ. – Sadikhasan

+0

@ Садихасан вопрос о получении данных между двумя диапазонами дат (дата начала 52-й недели 2015 года и дата окончания 2-й недели 2016 года). У него проблемы с его дизайном базы данных (используя несколько столбцов для даты и недели), но они не делают его проблему уникальной, как я ее вижу. – NSNoob

ответ

5

Попробуйте этот запрос, который может решить вашу проблему.

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

спасибо за быстрый ответ, я попробую это и дам вам знать, если его решить мою проблему –

+0

это решает мою проблему –

1

Это альтернативное решение, в котором вам не нужно записывать номера недель в вашей базе данных. Увидев, что Садихасан уже предоставил решение первоначального запроса 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");