MySQL STR_TO_DATE小时格式化
问题描述:
我试图用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 |
+-----------------------------------+
答
STR_TO_DATE将字符串转换为一个DATETIME对象 - 不是字符串来显示。如果你想显示你以后的日期格式,然后使用:
DATE_FORMAT(dateValue, "%k:%i")
+0
我有一个字符串(来自文件),我想创建一个Datetime对象(将此字符串保存到数据库中),因此STR_TO_DATE是正确的功能。 – Michael
答
您可以使用LPAD()
添加一个前导零:
SELECT STR_TO_DATE(LPAD("800", 4, 0), "%k%i");
对我来说,所有这三个给空值。 – MontyPython
我正在使用MySQL 5.5并且双重检查语句(在控制台和web-gui中)并且他们给出了上述(错误)输出 – Michael