按降序排列周和年

时间:2015-02-23 04:43:24

标签: php mysql

在我的表(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, 大天

2 个答案:

答案 0 :(得分:1)

不要存储这些字符串,而是从DATE字段计算它们。以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                                                          |
+--------------------------------------------------------------------+

答案 1 :(得分:0)

您可以使用mySql substring功能按照week_year字段的年份部分进行排序:

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