2015-02-23 133 views
2

在我的表(mysql表)中有一個字段「week_year」。具有像數據,此字段:按月份和年份排序

WK52_2014 
WK51_2014 
WK50_2014 
WK09_2015 
WK08_2015 
WK07_2015 
WK06_2015 
WK05_2015 
WK04_2015 
WK03_2015 
WK02_2015 
WK01_2015 

此處「WK52_2014」是指在2014年第52周,如果我查詢像下面

$query="SELECT DISTINCT(week_year) AS week_year FROM `table1` order by week_year desc"; 
$result=mysql_query($query); 
while($noticia = mysql_fetch_array($result)) { 
echo $noticia['week_year'] . "\n"; 
} 

如上所述將回聲。但對我來說,我希望它能夠顯示當前的排名前(WK09_2015),然後是上週(wk08_2015),然後是WK07_2015,如下所述。

WK09_2015 
WK08_2015 
WK07_2015 
WK06_2015 
WK05_2015 
WK04_2015 
WK03_2015 
WK02_2015 
WK01_2015 
WK52_2014 
WK51_2014 
WK50_2014 

你能幫我嗎我該怎麼辦。

由於提前,

BR, 大天

+0

你遇到的具體問題是什麼?請更精確。 – fuesika 2015-02-23 04:45:12

回答

1

不要儲存這些字符串,而不是從日期字段計算它們。下面是關於如何構建你的字符串,使用NOW()爲例線索:

mysql> SELECT CONCAT('WK', RIGHT(CONCAT('0', WEEK(now())), 2), '_', YEAR(now())); 
+--------------------------------------------------------------------+ 
| CONCAT('WK', RIGHT(CONCAT('0', WEEK(now())), 2), '_', YEAR(now())) | 
+--------------------------------------------------------------------+ 
| WK08_2015               | 
+--------------------------------------------------------------------+ 
+0

感謝您的回覆。您的命令將僅顯示WK08_2015。我也想顯示2015和2014的所有星期也正如我提到的本週前幾周 – 2015-02-23 05:42:42

+0

@MAHADEVASWAMYHN交換調用'now()'爲您的表上的日期列,然後可以'ORDER BY YEAR([列]),WEEK([列])' – 2015-04-03 07:50:05

0

您可以使用mysql substring功能可將week_year場這樣的年份部分訂購:

order by SUBSTRING(week_year,6) desc, week_year desc