【问题标题】:Parse date in MySQL在 MySQL 中解析日期
【发布时间】:2011-03-18 19:48:25
【问题描述】:

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

'15-Dec-09'

DATE_FORMAT() 用于格式化日期,反之则不行。

【问题讨论】:

    标签: mysql date-format date-formatting date-parsing


    【解决方案1】:

    您可能想要使用STR_TO_DATE() 函数。它是 DATE_FORMAT() 函数的逆函数。

    STR_TO_DATE(str,format)

    这是DATE_FORMAT() 函数的逆函数。它需要一个字符串str 和一个格式字符串format。如果格式字符串包含日期和时间部分,STR_TO_DATE() 返回一个 DATETIME 值,或者如果字符串只包含日期或时间部分,则返回一个DATETIME 值。如果从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)
    

    【讨论】:

    • @Sunny:你把声明改成STR_TO_DATE('6/20/2013', '%c/%d/%Y')了吗?
    • @Daniel 是的...我已经解决了,感谢您的认可。
    【解决方案2】:

    这是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)
    

    顺便说一句,未填充的分钟或秒没有 %-code:

         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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2012-09-04
      • 1970-01-01
      • 2021-01-22
      • 1970-01-01
      相关资源
      最近更新 更多