我正在尝试使用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 |
+-----------------------------------+
答案 0 :(得分:0)
STR_TO_DATE将字符串转换为DATETIME对象 - 而不是要显示的字符串。如果要以之后的格式显示日期,请使用:
DATE_FORMAT(dateValue, "%k:%i")
答案 1 :(得分:0)
您可以使用LPAD()
添加前导零:
SELECT STR_TO_DATE(LPAD("800", 4, 0), "%k%i");