首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么MySQL DATE_FORMAT函数在格式化时间值时返回NULL?

为什么MySQL DATE_FORMAT函数在格式化时间值时返回NULL?
EN

Stack Overflow用户
提问于 2013-07-11 11:57:35
回答 4查看 5.4K关注 0票数 1
代码语言:javascript
复制
select  DATE_FORMAT('8:48:30 AM', '%H:%i:%s')

它返回Null为什么?

但是当使用

代码语言:javascript
复制
select  DATE_FORMAT(CURTIME(), '%H:%i:%s')

它返回格式化后的值。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-07-11 13:01:52

它返回NULL,因为MySQL没有成功地将字符串解析为有效的DATETIME值。

要解决此问题,请使用STR_TO_DATE函数将字符串解析为TIME值。

代码语言:javascript
复制
SELECT STR_TO_DATE('8:48:30 AM', '%h:%i:%s %p') 

然后,要将TIME值转换为特定格式的字符串,请使用TIME_FORMAT函数,例如24小时时钟表示法:

代码语言:javascript
复制
SELECT TIME_FORMAT(STR_TO_DATE( '8:48:30 AM', '%h:%i:%s %p'),'%H:%i:%s')

返回:

代码语言:javascript
复制
--------
08:48:30
票数 2
EN

Stack Overflow用户

发布于 2013-07-11 12:03:32

DATE_FORMAT方法用于显示日期和时间,但是在第一个方法中,您只指定了时间之外的任何日期,因此它抛出了null

从手册上看-

DATE_FORMAT根据格式字符串设置日期值的格式。

在MySql 5.5版中,SELECT DATE_FORMAT( CURTIME( ) , '%H:%i:%s' )返回null

票数 2
EN

Stack Overflow用户

发布于 2013-07-11 12:06:36

mysql的第一个参数是DATETIME类型,在最新的mysql服务器版本中,两个查询都返回NULL。

所以你的问题的答案是,这种行为上的差异是因为你的mysql版本中的一个错误-在某种程度上,它将TIME转换为DATETIME,而不能将字符串转换为DATETIME

以下也是一个工作查询的示例:

代码语言:javascript
复制
select  DATE_FORMAT(NOW(), '%H:%i:%s')

NOW()返回DATETIME,而CURTIME()返回TIME

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17584793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档