select DATE_FORMAT('8:48:30 AM', '%H:%i:%s')它返回Null为什么?
但是当使用
select DATE_FORMAT(CURTIME(), '%H:%i:%s')它返回格式化后的值。
发布于 2013-07-11 13:01:52
它返回NULL,因为MySQL没有成功地将字符串解析为有效的DATETIME值。
要解决此问题,请使用STR_TO_DATE函数将字符串解析为TIME值。
SELECT STR_TO_DATE('8:48:30 AM', '%h:%i:%s %p') 然后,要将TIME值转换为特定格式的字符串,请使用TIME_FORMAT函数,例如24小时时钟表示法:
SELECT TIME_FORMAT(STR_TO_DATE( '8:48:30 AM', '%h:%i:%s %p'),'%H:%i:%s')返回:
--------
08:48:30发布于 2013-07-11 12:03:32
DATE_FORMAT方法用于显示日期和时间,但是在第一个方法中,您只指定了时间之外的任何日期,因此它抛出了null。
从手册上看-
DATE_FORMAT根据格式字符串设置日期值的格式。
在MySql 5.5版中,SELECT DATE_FORMAT( CURTIME( ) , '%H:%i:%s' )返回null
发布于 2013-07-11 12:06:36
mysql的第一个参数是DATETIME类型,在最新的mysql服务器版本中,两个查询都返回NULL。
所以你的问题的答案是,这种行为上的差异是因为你的mysql版本中的一个错误-在某种程度上,它将TIME转换为DATETIME,而不能将字符串转换为DATETIME。
以下也是一个工作查询的示例:
select DATE_FORMAT(NOW(), '%H:%i:%s')NOW()返回DATETIME,而CURTIME()返回TIME。
https://stackoverflow.com/questions/17584793
复制相似问题