我如何使用 mysql 选择查询在“x 小时 y 分钟 z 秒”之类的词中获得 2 次之间的差异
Posted
技术标签:
【中文标题】我如何使用 mysql 选择查询在“x 小时 y 分钟 z 秒”之类的词中获得 2 次之间的差异【英文标题】:How I get difference between 2 times in words like "x hours y minutes z seconds" using mysql select query 【发布时间】:2016-08-31 05:25:10 【问题描述】:我在一个表名中有两个时间列是 start_time 和 end_time。
我需要这些瓷砖之间的区别。例如start_time = 18:40:00
和 end_time = 20:50:00
。
输出将是2 hours 10 minutes.
【问题讨论】:
Calculate difference between two datetimes in mysql的可能重复 【参考方案1】:使用MySQL的TIMEDIFF
函数
SELECT
TIMEDIFF(end_time,start_time) AS duration
FROM your_table;
TIMEDIFF() 函数
MySQL TIMEDIFF()
返回两个时间或日期时间表达式之间的差异。需要注意的是,两个表达式必须是同一类型。
语法:
TIMEDIFF(expr1,expr2)
参数
Name Description
expr1 A datetime value.
expr2 A datetime value.
编辑:
如果您想以文字形式获取持续时间(例如x hours y minutes z seconds
):
SELECT
CONCAT
(
IF(HOUR(TIMEDIFF(end_time,start_time)) > 0, CONCAT(HOUR(TIMEDIFF(end_time,start_time)), ' hours'),''),
IF(MINUTE(TIMEDIFF(end_time,start_time)) > 0 , CONCAT(MINUTE(TIMEDIFF(end_time,start_time)),' minutes'),''),
IF(SECOND(TIMEDIFF(end_time,start_time)) > 0 , CONCAT(SECOND(TIMEDIFF(end_time,start_time)),' seconds'),'')
) AS duration
FROM your_table
演示:
SET @end_time := '20:50:00';
SET @start_time := '18:40:00';
SELECT
CONCAT(
IF(HOUR(TIMEDIFF(@end_time,@start_time)) > 0, CONCAT(HOUR(TIMEDIFF(@end_time,@start_time)), ' hours '),''),
IF(MINUTE(TIMEDIFF(@end_time,@start_time)) > 0 , CONCAT(MINUTE(TIMEDIFF(@end_time,@start_time)),' minutes '),''),
IF(SECOND(TIMEDIFF(@end_time,@start_time)) > 0 , CONCAT(SECOND(TIMEDIFF(@end_time,@start_time)),' seconds'),'')
) AS duration;
输出: 2 hours 10 minutes
【讨论】:
我需要输出 2 小时 10 分钟。 不是给你02:10:00
这个吗?现在是 2 小时 10 分钟。
我知道这一点,但可以查询给我 2 小时 10 分钟格式的结果
2 小时 10 分钟 0 秒首选?或者你不想要 0 值的单词。什么?
只需要几分钟以上是关于我如何使用 mysql 选择查询在“x 小时 y 分钟 z 秒”之类的词中获得 2 次之间的差异的主要内容,如果未能解决你的问题,请参考以下文章
在 PHP 中,如何创建包含引号和撇号的 mySQL 选择查询?