4

这是我的搜索结果(按 Cruise_date):

CRUISE_DATE     DAYS_TILL_CRUISE    NAME
10/13/2012  29  Octobertfest
10/20/2012  36  Rare Air Show,
10/20/2012  36  Bugs and Bratz
11/10/2012  57  Fall Color Super Cruise
11/10/2012  57  Club Cruise-In to Desoto State Park
9/22/2012   8   Bugs on the Bayou
9/23/2012   9   Hot Dogs and Hot Rods

请注意,日期为 10 月、11 月、9 月。这是我的sql语句:

SELECT
         DATE_FORMAT(cruise_date, '%c/%e/%Y') AS cruise_date,
         DATEDIFF(cruise_date, CURDATE()) AS days_till_cruise,
         NAME
FROM
         `cruise`
WHERE
         `cruise_date` >= '2012-09-14'
ORDER BY

       `cruise_date`

为什么我的日期不能正确排序?

单击此处查看实际操作

4

3 回答 3

4

它现在按 的结果而DATE_FORMAT(cruise_date, '%c/%e/%Y')不是字段按文本排序cruise_date。试试ORDER BY cruise.cruise_date

于 2012-09-14T11:09:30.127 回答
3

这是因为您在SELECT子句中使用了相同的别名。您需要将别名更改为不同的名称或使用cruise.cruise_dateinORDER BY子句,否则记录将在选择的文本列上排序。试试这个:

SELECT
         DATE_FORMAT(cruise_date, '%c/%e/%Y') AS cruise_date_1,
         DATEDIFF(cruise_date, CURDATE()) AS days_till_cruise,
         NAME
FROM
         `cruise`
WHERE
         `cruise_date` >= '2012-09-14'
ORDER BY

       `cruise_date`

SQLFiddle 演示

于 2012-09-14T11:11:33.840 回答
1

或者,尝试订购它days_till_cruise

ORDER BY
       `days_till_cruise`
于 2012-09-14T11:12:30.547 回答