【问题标题】:Convert a string to date format and retrieve the week number将字符串转换为日期格式并检索周数
【发布时间】:2020-01-16 06:48:49
【问题描述】:

我有15-Nov-20 格式的日期。我想在将数据插入表之前使用查询将其转换为 MySQL 表的日期格式(yyyy-mm-dd),并希望分别获取该日期的周和年。我尝试了以下查询:

SELECT  STR_TO_DATE('15-Nov-20', '%Y-%m-%d') FROM table

但这会返回NULL

【问题讨论】:

    标签: mysql string date


    【解决方案1】:

    您的格式字符串不正确(请参阅manual)。对于您的示例数据,它应该是 %d-%M-%y 例如

    SELECT  STR_TO_DATE('15-Nov-20', '%d-%M-%y')
    

    输出:

    2020-11-15
    

    然后要获得年份和星期,您可以使用DATE_FORMAT%U%u%V%v 之一,具体取决于您的需要(有关它们的定义,请参见manual),例如

    SELECT DATE_FORMAT(STR_TO_DATE('15-Nov-20', '%d-%M-%y'), '%Y-%U')
    

    输出

    2020-46
    

    请注意,如果您使用%V%v 作为周数,则还必须使用%X%x 作为年份,例如

    SELECT DATE_FORMAT(STR_TO_DATE('15-Nov-20', '%d-%M-%y'), '%X-%V')
    

    输出

    2020-46
    

    Demo on dbfiddle

    【讨论】:

      【解决方案2】:

      您还可以使用 PHP 的 DateTime 类来获取周数和年数。

      $parsedDate = new DateTime('15-Nov-20');
      $week = $parsedDate->format("W");
      echo 'Weeknumber:' . $week;
      echo '<br>';
      $year = $parsedDate->format("Y");
      echo 'Year:' . $year;
      

      这会给你:

      Weeknumber:46
      Year:2020
      

      【讨论】:

        猜你喜欢
        • 2017-01-22
        • 2013-12-28
        • 1970-01-01
        • 2014-01-18
        • 2019-10-13
        相关资源
        最近更新 更多