Подтвердить что ты не робот

Преобразование даты в MySQL из поля строки

Я использую систему, в которой даты хранятся в виде строк в формате dd/mm/yyyy. Можно ли преобразовать это в yyyy-mm-dd в запрос SELECT (чтобы я мог использовать DATE_FORMAT на нем)? Имеет ли MySQL функцию синтаксического анализа даты?

В настоящее время единственным способом, который я могу придумать, является конкатенация множества подстрок, но, надеюсь, есть более простое решение.

(К сожалению, я не могу преобразовать поле в поле истинной даты, так как это мета-таблица: тот же столбец содержит значения для разных полей, которые являются только строками.)

4b9b3361

Ответ 1

Это:

STR_TO_DATE(t.datestring, '%d/%m/%Y')

... преобразует строку в тип данных datetime. Чтобы убедиться, что он выходит в желаемом формате, используйте DATE_FORMAT:

DATE_FORMAT(STR_TO_DATE(t.datestring, '%d/%m/%Y'), '%Y-%m-%d')

Если вы не можете изменить тип данных в исходном столбце, я предлагаю создание представления, в котором используется вызов STR_TO_DATE для преобразования string к типу данных DateTime.

Ответ 2

Да, там str_to_date

mysql> select str_to_date("03/02/2009","%d/%m/%Y");
+--------------------------------------+
| str_to_date("03/02/2009","%d/%m/%Y") |
+--------------------------------------+
| 2009-02-03                           |
+--------------------------------------+
1 row in set (0.00 sec)

Ответ 3

STR_TO_DATE позволяет это сделать и имеет аргумент формата.

Ответ 4

SELECT STR_TO_DATE(dateString, '%d/%m/%y') FROM yourTable...