Comment convertir le suivant en date d'insertion/mise à jour dans un champ TIMESTAMP
ou DATE
dans MySQL?Parse date dans MySQL
'15-Dec-09'
DATE_FORMAT()
est utilisé à ce jour de format, mais pas l'inverse.
Comment convertir le suivant en date d'insertion/mise à jour dans un champ TIMESTAMP
ou DATE
dans MySQL?Parse date dans MySQL
'15-Dec-09'
DATE_FORMAT()
est utilisé à ce jour de format, 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)
Ceci est l'inverse de la fonction
DATE_FORMAT()
. Il faut 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 des parties de date ou d'heure. Si la date, l'heure ou la valeur datetime 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 une table 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)
D'ailleurs il n'y a pas% -codes pour unpadded minutes ou secondes:
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')
elle ne présente pas travailler pour date au format '20/06/2013'. –
@Sunny: Avez-vous changé l'instruction en STR_TO_DATE ('20/06/2013', '% c /% d /% Y') '? – Fluff
@Daniel ouais ... Je l'ai déjà résolu, merci d'avoir reconnu. –