Изменение строки даты на тип данных date - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь отсортировать таблицу, используя столбец Date. Сортируется вверх ногами, т. Е. Дата в нисходящем формате. Однако столбец Date имеет текстовый формат: '31-June-2008' Как я могу отсортировать этот столбец?

Пробовал этот код изменить, но не работал

alter table bajaj1 modify column Date date;

1 Ответ

1 голос
/ 28 апреля 2019

Ваша проблема в том, что ваши даты не в правильном формате даты, поэтому они сортируются как строки. Так, например, 31-June-2008 "до" 9-June-2008. Чтобы правильно отсортировать их, вам нужно преобразовать их в даты, что вы можете сделать, используя STR_TO_DATE:

STR_TO_DATE(Date, '%e-%M-%Y')

Примечание. Я предположил, что если день месяца меньше 10, он будет выглядеть, например, как 4-March-2001. Если это похоже на 04-March-2001, вы должны изменить %e на %d.

В запросе вы можете использовать это как

SELECT *
FROM yourtable
ORDER BY STR_TO_DATE(Date, '%e-%M-%Y')

Если вы хотите изменить структуру таблицы, возможно, проще всего добавить сгенерированный столбец :

ALTER TABLE yourtable ADD sdate DATE AS (STR_TO_DATE(Date, '%e-%M-%Y'))

Затем вы можете сортировать по sdate вместо Date.

Демонстрация на dbfiddle

...