existe-t-il une fonction mySQL pour convertir une date du format jj.mm.aa en AAAA-MM-JJ?
par exemple, 03.09.13 -> 2013-09-03
.
Puisque votre entrée est une chaîne sous la forme 03.09.13
, Je suppose (puisque le 3 septembre 2013 est aujourd'hui) que c'est dd.mm.yy
. Vous pouvez le convertir en une date en utilisant STR_TO_DATE
:
STR_TO_DATE(myVal, '%d.%m.%y')
Ensuite, vous pouvez le reformater en une chaîne en utilisant DATE_FORMAT
:
DATE_FORMAT(STR_TO_DATE(myVal, '%d.%m.%y'), '%Y-%m-%d')
Notez que l'année est %y
("y" en minuscules) dans STR_TO_DATE
et %Y
("Y" majuscule) dans DATE_FORMAT
. La version minuscule correspond aux années à deux chiffres et la majuscule aux années à quatre chiffres.
Utilisation
SELECT CONCAT(
'20',
SUBSTR('03.09.13', 7, 2),
'-',
SUBSTR('03.09.13', 4, 2),
'-',
SUBSTR('03.09.13', 1, 2))
Violon démo .
Plus d'informations sur les formats que vous pouvez lire dans la page de manuel correspondante. Astuce: s'il s'agit d'une valeur de conversion à partir d'un champ non datetime, il vaut mieux utiliser à la place le type de données DATE/DATETIME. Cependant, c'est une mauvaise idée de fonctionner avec des dates via des fonctions de chaîne. Ci-dessus, il y a un bon truc avec STR_TO_DATE
(ne répétera pas ce code, mis à jour pour s'adapter mieux)
Les dates sont stockées dans un format interne. Vous pouvez utiliser la fonction date_format()
pour la convertir en chaîne en utilisant une variété de formats. Pour le vôtre en particulier:
select date_format(`date`, '%Y-%m-%d')