为了账号安全,请及时绑定邮箱和手机立即绑定

在MySQL中解析日期

在MySQL中解析日期

GCT1015 2019-11-02 11:00:37
如何将以下内容转换为日期以插入/更新到MySQL中的TIMESTAMPor DATE字段?'15-Dec-09'DATE_FORMAT() 用于格式化日期,但不能反之。
查看完整描述

2 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

您可能要使用该STR_TO_DATE()功能。这是DATE_FORMAT()函数的逆函数。


STR_TO_DATE(str,format)


这是DATE_FORMAT()函数的逆函数。它需要一个字符串str和一个格式字符串format。如果格式字符串同时包含日期和时间部分,则STR_TO_DATE()返回一个DATETIME值;如果格式字符串仅包含日期或时间部分,则返回一个DATE或TIME值。如果从中提取的日期,时间或日期时间值不str合法,则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)


查看完整回答
反对 回复 2019-11-02
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

这是DATE_FORMAT()和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)

 %%  %            %

要么


%X%V 199952       200001        YEARWEEK(d,2)

%x%v 199952       199952        YEARWEEK(d,3)

顺便说一下,没有%的代码在未填充的分钟或秒内:


     59           4             MINUTE(t)  

     58           5             SECOND(t)

实际上:


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

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


查看完整回答
反对 回复 2019-11-02
  • 2 回答
  • 0 关注
  • 792 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信