2015-12-30 27 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"); 
相關問題