0

我正在尝试使用 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                          |
+-----------------------------------+
4

1 回答 1

1

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

SELECT STR_TO_DATE(LPAD("800", 4, 0), "%k%i");
于 2017-04-30T16:04:41.480 回答