代码之家  ›  专栏  ›  技术社区  ›  membersound

如何在mysql中格式化字符串到时间?

  •  0
  • membersound  · 技术社区  · 6 年前
    SELECT STR_TO_DATE('07:15:00','%H:%i:%s') as time
    SELECT STR_TO_DATE('07:15:00','%T') as time
    

    NULL

    +------+
    | time |
    +------+
    | NULL |
    +------+
    1 row in set, 1 warning (0.01 sec)
    

    而且,我只在乎时间和分钟。但这也失败了:

    SELECT STR_TO_DATE('07:15:00','%H:%i') as time
    

    我的最终目标是创建一个视图,从另一个表中选择字符串并将它们转换为 TIME

    CREATE VIEW
    myview AS SELECT
    SELECT STR_TO_DATE('07:15:00','%H:%i') as time
    FROM `othertable`
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   forpas    6 年前

    Cast 时间紧迫到 time :

    SELECT cast('07:15:00' as time) as time 
    
        2
  •  2
  •   Barbaros Özhan    6 年前

    我想你用的是版本 5.7

    看看 SELECT @@GLOBAL.sql_mode NO_ZERO_DATE 值在字符串中返回。[顺便说一句, NO_ZERO_IN_DATE 没有约会 参数已弃用]

    没有约会 ,那么 SELECT STR_TO_DATE('07:15:00','%H:%i:%s') SELECT STR_TO_DATE('07:15:00','%T') 退货 null .

    SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION'; 如果你有特权,或者你可以编辑 mysql.cnf

        3
  •  0
  •   Tim Biegeleisen    6 年前

    如果不能禁用 NO_ZERO_DATE STR_TO_DATE 生成时间值。您可以将一个随机日期连接到时间,然后调用 TIME() 只提取时间部分,例如。

    SELECT TIME(STR_TO_DATE(CONCAT('2019-01-01 ', '07:15:00'), '%Y-%m-%d %H:%i:%s'))
    --                             ^^ random date  ^^ your time literal
    
        4
  •  -1
  •   Joe F    6 年前
    SELECT DATE_FORMAT('2019-11-05','%Y%m%d') as time 
    

    试试这个函数