You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL TIME类型数据格式问题:如何仅获取时分秒部分

解决MySQL TIME字段查询返回带日期和时区的问题

这个问题我之前也碰到过,本质是Ruby的数据库驱动(比如mysql2)会把MySQL的TIME类型自动转换为完整的Time对象——而Time对象必须包含日期部分,所以默认补了2000-01-01,再加上时区信息就成了你看到的格式。下面给你两种实用的解决思路:

方法一:在SQL查询中直接格式化(推荐)

直接在查询语句里用MySQL的DATE_FORMAT函数把TIME字段转成你想要的字符串格式,这样返回结果里直接就是纯时间部分,不用在Ruby里额外处理:

result = connect.query("SELECT DATE_FORMAT(sourcetime, '%H:%i:%s') AS sourcetime, description FROM data WHERE event_type = 'ALARM_OPENED' AND severity = '2'")
equipments = result.map { |print_this| [print_this['sourcetime'], print_this['description']] }
p equipments

这里的%H:%i:%s对应24小时制小时、分钟、秒,刚好输出12:00:04这种格式。

方法二:在Ruby代码中格式化Time对象

如果不想修改SQL语句,也可以在Ruby里对返回的Time对象调用strftime方法,提取纯时间部分:

result = connect.query("SELECT * FROM data WHERE event_type = 'ALARM_OPENED' AND severity = '2'")
equipments = result.map do |print_this|
  formatted_time = print_this['sourcetime'].strftime('%H:%M:%S')
  [formatted_time, print_this['description']]
end
p equipments

strftime('%H:%M:%S')会把Time对象格式化为仅包含时分秒的字符串,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Joshua Ng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:29:46