MySQL STR_TO_DATE小时格式化

时间:2017-04-30 15:20:23

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

我正在尝试使用STR_TO_DATE函数格式化包含时间值的字符串。时间值为:小时(0-23),无前导零+分钟(00-59) 例如为了格式化这些值,我尝试使用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                          |
+-----------------------------------+

2 个答案:

答案 0 :(得分:0)

STR_TO_DATE将字符串转换为DATETIME对象 - 而不是要显示的字符串。如果要以之后的格式显示日期,请使用:

DATE_FORMAT(dateValue, "%k:%i")

答案 1 :(得分:0)

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

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