2010-07-21 10 views
39

Jak przekonwertować poniższe dane na datę wstawienia/aktualizacji na pole TIMESTAMP lub DATE w MySQL?Data utworzenia w MySQL

'15-Dec-09' 

DATE_FORMAT() stosuje się format daty, ale nie na odwrót.

Odpowiedz

81

Możesz użyć funkcji STR_TO_DATE(). Jest to odwrotność funkcji DATE_FORMAT().

STR_TO_DATE (str, format)

Jest odwrotnością funkcji DATE_FORMAT(). Pobiera ciąg str i ciąg formatu format. STR_TO_DATE() zwraca wartość DATETIME, jeśli ciąg formatu zawiera części daty i czasu lub wartość DATE lub TIME, jeśli ciąg zawiera tylko części daty lub czasu. Jeśli data, godzina lub wartość datetime wyodrębniona z str jest nielegalna, STR_TO_DATE() zwraca NULL i generuje ostrzeżenie.

Przykład:

SELECT STR_TO_DATE('15-Dec-09', '%d-%b-%y') AS date; 
+------------+ 
| date  | 
+------------+ 
| 2009-12-15 | 
+------------+ 
1 row in set (0.00 sec) 
+0

to nie pracować na randkę w formacie "6/20/2013". –

+2

@Sunny: Czy zmieniłeś instrukcję na "STR_TO_DATE (" 6/20/2013 ","% c /% d /% Y ")'? – Fluff

+0

@ Daniel tak ... Rozwiązałem już to, dziękuję za potwierdzenie. –

27

Oto tabela z formatu%, Kody stosowane w DATE_FORMAT() i 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) 
%% %   % 

lub

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

Nawiasem mówiąc nie istnieją%, Kody do unpadded minut lub sekund:

 59   4    MINUTE(t) 
    58   5    SECOND(t) 

w akcji:

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