【问题标题】:MySQL STR_TO_DATE hour formattingMySQL STR_TO_DATE 小时格式
【发布时间】:2017-09-28 05:05:01
【问题描述】:

我正在尝试使用 STR_TO_DATE 函数格式化包含时间值的字符串。时间值为:小时(0-23)不带前导零+分钟(00-59) 例如800、1245 或 1535。为了格式化这些值,我尝试使用 MySQL5.5 文档中描述的 %k 小时说明符,但如果小时没有前导零,这将不起作用:

不起作用:

+-----------------------------------+
| SELECT STR_TO_DATE("800","%k%i"); |
+-----------------------------------+
| NULL                              |
+-----------------------------------+

按预期工作:

+------------------------------------+
| SELECT STR_TO_DATE("1855","%k%i"); |
+------------------------------------+
| 18:55:00                           |
+------------------------------------+

+-----------------------------------+
| SELECT STR_TO_DATE("0800","%k%i");|
+-----------------------------------+
| 08:00:00                          |
+-----------------------------------+

【问题讨论】:

  • 对我来说,这三个都给出 NULL。
  • 我正在使用 MySQL 5.5 并仔细检查了语句(在控制台和 web-gui 中),它们给出了上述(错误)输出

标签: mysql time datetime-format str-to-date


【解决方案1】:

您可以使用LPAD() 添加前导零:

SELECT STR_TO_DATE(LPAD("800", 4, 0), "%k%i");

【讨论】:

    猜你喜欢
    • 2015-03-02
    • 2018-04-09
    • 2014-08-04
    • 2013-12-19
    • 2015-03-05
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多