преобразование даты varchar в max() date() mysql

В моей базе данных тип столбца — varchar (30), в котором хранится дата (24 февраля 2018 г.) с несколькими записями. мне нужна максимальная дата, например, у меня есть 01.10.2016, 03.02.2017, 24.02.2018. Я использую следующий запрос:

SELECT MAX(receipt_date) as rd FROM tblname

который возвращает меня 01.10.2016, что неверно. Я также попытался преобразовать его в формат даты. но не удалось. mysql выдает синтаксическую ошибку.

SELECT CONVERT(varchar, mycolumn, 105) FROM tblname

но не удалось.


person Muhammad Khurshid    schedule 25.02.2019    source источник
comment
Шаг 1. Сохраните даты как даты. Тогда вернитесь к usz   -  person Strawberry    schedule 25.02.2019


Ответы (1)


Вот что я бы сделал:

ALTER TABLE tblname ADD COLUMN receipt_date2 DATE;

UPDATE tblname SET receipt_date2 = STR_TO_DATE(receipt_date, '%d/%m/%Y');

ALTER TABLE tblname DROP COLUMN receipt_date,
  CHANGE receipt_date2 receipt_date DATE;

SELECT MAX(receipt_date) AS rd FROM tblname;

Вы не можете эффективно использовать даты в MySQL, если вы храните их как VARCHAR в формате дд-мм-гггг. Вы должны использовать тип данных DATE. Тип данных MySQL DATE хранит даты только в формате гггг-мм-дд. Таким образом, он может легко искать MAX(), он может их сортировать, он может выполнять арифметические операции с датами.

person Bill Karwin    schedule 25.02.2019
comment
Я рад, что смог помочь! - person Bill Karwin; 30.04.2019