varchar преобразование даты в max () date () mysql - PullRequest
0 голосов
/ 25 февраля 2019

В моей базе данных тип столбца varchar (30), в котором хранится дата (24/02/2018), имеющая несколько записей.я хочу максимальную дату, например, у меня есть 10/01/2016, 20/03/2017, 24/02/2018.Я использую следующий запрос:

SELECT MAX(receipt_date) as rd FROM tblname

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

SELECT CONVERT(varchar, mycolumn, 105) FROM tblname

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

1 Ответ

0 голосов
/ 25 февраля 2019

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

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(), сортировать их, арифметику дат.

...