Преобразование даты в MySQL из строкового поля - PullRequest
58 голосов
/ 07 декабря 2009

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

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

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

Ответы [ 4 ]

127 голосов
/ 07 декабря 2009

Это:

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 для преобразования строки в тип данных DateTime.

18 голосов
/ 07 декабря 2009

Да, есть 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)
4 голосов
/ 07 декабря 2009

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

0 голосов
/ 07 декабря 2009
SELECT STR_TO_DATE(dateString, '%d/%m/%y') FROM yourTable...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...