Comment convertir les éléments suivants en date d'insertion/mise à jour dans un champ TIMESTAMP
ou DATE
dans MySQL?
'15-Dec-09'
DATE_FORMAT()
est utilisé pour formater la date, mais pas l'inverse.
Vous pouvez utiliser la fonction STR_TO_DATE()
. C'est l'inverse de la fonction DATE_FORMAT()
.
STR_TO_DATE (str, format)
C'est l'inverse de la fonction
DATE_FORMAT()
. Il prend une chaînestr
et une chaîne de formatformat
.STR_TO_DATE()
renvoie une valeurDATETIME
si la chaîne de format contient des parties de date et d'heure, ou une valeurDATE
ouTIME
si la chaîne contient uniquement la date ou l'heure les pièces. Si la valeur de date, d'heure ou de date/heure extraite destr
est illégale,STR_TO_DATE()
renvoieNULL
et génère un avertissement.
Exemple:
SELECT STR_TO_DATE('15-Dec-09', '%d-%b-%y') AS date;
+------------+
| date |
+------------+
| 2009-12-15 |
+------------+
1 row in set (0.00 sec)
Voici un tableau du format% -codes utilisé dans DATE_FORMAT () et STR_TO_DATE () .
-----examples-for------
1999-12-31 2000-01-02
23:59:58.999 03:04:05 identical to
------------ ---------- -------------
%a Fri Sun LEFT(DAYNAME(d),3)
%b Dec Jan LEFT(MONTHNAME(d),3)
%c 12 1 MONTH(d)
%D 31st 2nd DAYOFMONTH(d)+st,nd,rd
%d 31 02 LPAD(DAYOFMONTH(d),0,2)
%e 31 2 DAYOFMONTH(d)
%f 999000 000000 LPAD(MICROSECOND(t),6,0)
%H 23 03 LPAD(HOUR(t),2,0)
%h 11 03
%I 11 03
%i 59 04 LPAD(MINUTE(t),2,0)
%j 365 002
%k 23 3 HOUR(t)
%l 11 3
%M December January MONTHNAME(d)
%m 12 01 LPAD(MONTH(d),2,0)
%p PM AM
%r 11:59:58 PM 03:04:05 AM
%S 58 05 LPAD(SECOND(t),2,0)
%s 58 05 LPAD(SECOND(t),2,0)
%T 23:59:58 03:04:05
%U 52 01 LPAD(WEEK(d,0),2,0)
%u 52 00 LPAD(WEEK(d,1),2,0)
%V 52 01 RIGHT(YEARWEEK(d,2),2)
%v 52 52 RIGHT(YEARWEEK(d,3),2)
%W Friday Sunday DAYNAME(d)
%w 5 0 DAYOFWEEK(d)-1
%X 1999 2000 LEFT(YEARWEEK(d,2),4)
%x 1999 1999 LEFT(YEARWEEK(d,3),4)
%Y 1999 2000 YEAR(d)
%y 99 00 RIGHT(YEAR(d),2)
%% % %
ou
%X%V 199952 200001 YEARWEEK(d,2)
%x%v 199952 199952 YEARWEEK(d,3)
Soit dit en passant, il n'y a pas de code% pour les minutes ou les secondes non remplies:
59 4 MINUTE(t)
58 5 SECOND(t)
En action:
'15-Dec-09' == DATE_FORMAT('2009-12-15', '%d-%b-%y')
'2009-12-15' == STR_TO_DATE('15-Dec-09', '%d-%b-%y')