55 votes

Analyser la date dans MySQL

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.

108voto

Daniel Vassallo Points 142049

Vous souhaiterez peut-être utiliser l' STR_TO_DATE() fonction. C'est l'inverse de l' DATE_FORMAT() fonction.

STR_TO_DATE(str,format)

C'est l'inverse de l' DATE_FORMAT() fonction. Il prend une chaîne de caractères str et une chaîne de format format. STR_TO_DATE() renvoie unDATETIME de la valeur si la chaîne de format contient à la fois la date et l'heure de pièces, ou un DATE ou TIME de la valeur si la chaîne ne contient que de la date ou de l'heure de pièces. Si la date, l'heure ou la valeur datetime extrait de str est illégal, STR_TO_DATE() retours NULL et produit un message d'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)

45voto

BobStein-VisiBone Points 398

Réponse très utile! J'avais oublié STR_TO_DATE (). Voici un tableau des codes pour ce deuxième paramètre incroyable, avec des exemples. Les sources sont mes cheatsheets , et la documentation MySQL pour DATE_FORMAT ()

- Bob Stein

      -----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)
     59           4             MINUTE(t)           
 %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)
     58           5             SECOND        
 %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)
 %%  %            %

%X%V 199952       200001        YEARWEEK(d,2)
%x%v 199952       199952        YEARWEEK(d,3)


 e.g. '15-Dec-09' = DATE_FORMAT('2009-12-15', '%d-%b-%y')
 e.g. '2009-12-15' = STR_TO_DATE('15-Dec-09', '%d-%b-%y')
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X