Conversion d’une date dans MySQL à partir d’un champ de chaîne

J’utilise un système où les dates sont stockées sous forme de chaînes au format dd/mm/yyyy . Est-il possible de convertir cela en yyyy-mm-dd dans une requête SELECT (pour que je puisse y utiliser DATE_FORMAT )? MySQL a-t-il une fonction d’parsing de date?

Actuellement, la seule méthode à laquelle je puisse penser est de concaténer un tas de sous-chaînes, mais j’espère que la solution sera plus simple.

(Malheureusement, je ne peux pas convertir le champ en un véritable champ de date car il s’agit d’une méta-table: la même colonne contient des valeurs pour différents champs qui ne sont que des chaînes).

Ce:

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

… convertira la chaîne en un type de données datetime. Pour être sûr que le format souhaité soit utilisé, utilisez DATE_FORMAT :

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

Si vous ne pouvez pas modifier le type de données dans la colonne d’origine, je suggère de créer une vue qui utilise l’appel STR_TO_DATE pour convertir la chaîne en un type de données DateTime.

Oui, il y a 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) 

STR_TO_DATE vous permet de faire cela, et il a un argument de format.

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