MySQL 日期字段未响应查询中的 ASC 或 DESC

MySQL date field not responding to ASC or DESC in query

我正在尝试将 table 个日期按升序或降序排序,但我都做不到。查询没有给出语法错误,所以我不认为是这样。

Server version: 5.7.28-0ubuntu0.18.04.4 (Ubuntu)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

mysql> select * from elections order by 'last_election' ASC;
+--------+-----------------+---------------+
| row_id | jurisdiction_id | last_election | 
+--------+-----------------+---------------+
|      1 |               3 | 2018-11-24    |
|      2 |               2 | 2019-03-23    |
|      4 |               5 | 2018-03-17    |
|      5 |               4 | 2017-11-25    |
|      6 |               1 | 2016-10-15    |
|      7 |               6 | 2017-03-11    |
|      8 |               7 | 2018-03-03    | 
|      9 |               8 | 2016-08-27    | 
|     11 |               9 | 2019-05-18    | 
+--------+-----------------+---------------+
9 rows in set (0.00 sec) 

之前/其他类似的问题都说,"Your field type is text or varchar, duh!"但是字段类型肯定是日期:

+----------------------+---------+------+-----+---------+----------------+
| Field                | Type    | Null | Key | Default | Extra          |
+----------------------+---------+------+-----+---------+----------------+
| row_id               | int(11) | NO   | PRI | NULL    | auto_increment |
| jurisdiction_id      | int(11) | NO   | UNI | NULL    |                |
| last_election        | date    | YES  |     | NULL    |                |
+----------------------+---------+------+-----+---------+----------------+

如何查询 table 以便 last_election 是有序的?

我觉得应该是:

select * from elections order by `last_election` ASC

注意引号类型

因为 ' ' 用于字符串,反引号用于列名。所以我猜你正试图通过不变的字符串对它们进行排序 - 因此它的工作原理与根本没有 order by

一样

您的查询似乎没问题

试试下面的查询。

select * from elections order by date(last_election) ASC;

如果它的工作尝试删除 table 并使用适当的字段类型重新创建它。