2017-04-30 66 views
0

我试图用STR_TO_DATE函数格式化一个包含时间值的字符串。时间值是:小时(0-23),没有前导零+分钟(00-59) 例如为了格式化这些值,我尝试使用MySQL5.5文档中描述的%k小时说明符,但是如果小时没有前导零,则不适用:MySQL STR_TO_DATE小时格式化

不起作用:如预期

+-----------------------------------+ 
| 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

对我来说,所有这三个给空值。 – MontyPython

+0

我正在使用MySQL 5.5并且双重检查语句(在控制台和web-gui中)并且他们给出了上述(错误)输出 – Michael

回答

0

STR_TO_DATE将字符串转换为一个DATETIME对象 - 不是字符串来显示。如果你想显示你以后的日期格式,然后使用:

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

我有一个字符串(来自文件),我想创建一个Datetime对象(将此字符串保存到数据库中),因此STR_TO_DATE是正确的功能。 – Michael

0

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

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