Преобразование даты в MySQL из поля строки
Я использую систему, в которой даты хранятся в виде строк в формате dd/mm/yyyy
. Можно ли преобразовать это в yyyy-mm-dd
в запрос SELECT (чтобы я мог использовать DATE_FORMAT
на нем)? Имеет ли MySQL функцию синтаксического анализа даты?
В настоящее время единственным способом, который я могу придумать, является конкатенация множества подстрок, но, надеюсь, есть более простое решение.
(К сожалению, я не могу преобразовать поле в поле истинной даты, так как это мета-таблица: тот же столбец содержит значения для разных полей, которые являются только строками.)
Ответы
Ответ 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...