Как отсортировать по столбцу Дата, которая больше, чем DATE (NOW ())? - PullRequest
0 голосов
/ 24 июня 2019

У меня есть столбец date_end, который мне нужно отсортировать там, где важно только верхние строки с датой больше, чем сегодня.

Так что дайте дату больше, чем сегодня = "1", меньше = "0" и сортируйте ее.

То есть с приведенной ниже таблицей данных:

+----+------------+ 
| id | date_end   |  
+----+------------+ 
| 1  | 31-01-2018 |  
+----+------------+ 
| 2  | 01-05-2019 |  
+----+------------+ 
| 3  | 31-05-2018 |  
+----+------------+ 
| 4  | 31-07-2019 |  
+----+------------+ 
| 5  | 31-04-2020 |  
+----+------------+ 
| 6  | 31-08-2019 |  
+----+------------+ 

Мне нужно фактически добавить «фактический» столбец и отсортировать по нему:

+----+------------+--------+
| id | date_end   | actual |
+----+------------+--------+
| 1  | 31-01-2018 | 0      |
+----+------------+--------+
| 2  | 01-05-2019 | 0      |
+----+------------+--------+
| 3  | 31-05-2018 | 0      |
+----+------------+--------+
| 4  | 31-07-2019 | 1      |
+----+------------+--------+
| 5  | 31-04-2020 | 1      |
+----+------------+--------+
| 6  | 31-08-2019 | 1      |
+----+------------+--------+

Что-то вроде: ЗАКАЗАТЬ ПО СЛУЧАЮ, КОГДА date_end> ДАТА (СЕЙЧАС ()) ТОГДА 1 ИЛИ 2, КОНЕЦ

Ответы [ 2 ]

2 голосов
/ 24 июня 2019

Тогда сделайте точно так, как вы предложили:

ORDER BY CASE WHEN date_end > curdate() THEN 1 ELSE 0 END
1 голос
/ 25 июня 2019

В MySQL вы можете воспользоваться тем фактом, что логические выражения можно использовать напрямую.Итак:

order by (date_end > curdate()) desc

"true"> "false", поэтому desc ставит истинные значения на первое место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...