在MySQL中parsingdate

如何将以下内容转换为插入/更新到MySQL中的TIMESTAMPDATE字段的DATE

 '15-Dec-09' 

DATE_FORMAT()用于格式化date,但不是相反的方式。

您可能需要使用STR_TO_DATE()函数。 这是DATE_FORMAT()函数的反函数。

STR_TO_DATE(STR,格式)

这是DATE_FORMAT()函数的反函数。 它采用stringstr和格式stringformat 。 如果格式化string同时包含date和时间部分,则STR_TO_DATE()返回DATETIME值;如果string仅包含date或时间部分,则返回DATETIME值。 如果从str提取的date,时间或date时间值是非法的,则STR_TO_DATE()返回NULL并产生警告。

例:

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

非常有用的答案! 我忘记了STR_TO_DATE()。 下面是一个关于这个令人惊奇的第二个参数的代码的例子。 来源是我的作弊表 ,以及DATE_FORMAT()的MySQL文档

– 鲍勃·斯坦

  -----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) eg '15-Dec-09' = DATE_FORMAT('2009-12-15', '%d-%b-%y') eg '2009-12-15' = STR_TO_DATE('15-Dec-09', '%d-%b-%y')