MySQL:如何将秒转换为mm:ss格式?

时间:2016-05-16 11:55:34

标签: mysql sql format

我想在sql select语句中将秒转换为minute : seconds格式。

目前我正在使用:

SELECT SEC_TO_TIME(duration) from messages; 

它完美无缺,但它给了我这种时间格式:hh:mm:ss 但我需要mm:ss

是否可以使用sql查询将秒转换为mm:ss格式?

3 个答案:

答案 0 :(得分:4)

如果该值小于一小时,则执行:

SELECT RIGHT(SEC_TO_TIME(duration), 5) from messages; 

如果你可能超过一个小时,那么做算术:

SELECT CONCAT_WS(':', FLOOR(SEC_TO_TIME(duration) / 60),
                 SEC_TO_TIME(duration) % 60)

答案 1 :(得分:0)

我最近有一个类似的项目,我需要将存储的秒数转换为m:ss格式。无论金额多少,都需要至少一个代表分钟的数字和两个代表秒数的数字。小时占位符被禁止,因此分钟值可以接受超过59并且还包含超过2位数。分钟值不得为零填充。

这就是我使用的:(SQLFiddle Demo

CONCAT(FLOOR(seconds/60), ':', LPAD(MOD(seconds,60), 2, 0)) AS `m:ss`

又名

CONCAT(FLOOR(seconds/60), ':', LPAD(seconds%60, 2, 0)) AS `m:ss`

seconds  |   m:ss
-----------------
      0  |   0:00
      1  |   0:01
     10  |   0:10
     60  |   1:00
     61  |   1:01
     71  |   1:11
   3599  |  59:59
   3600  |  60:00
   5999  |  99:59
   6000  | 100:00

TIME_FORMAT(SEC_TO_TIME(seconds),'%i:%s')不合适,因为项目规范不希望分钟部分为零填充。这是a good post relating to this technique

TIME_FORMAT()DATE_FORMAT()中没有单位数的分钟选项。

答案 2 :(得分:0)

如果您使用的是 MySQL 8.0+,则可以像这样使用 REGEXP_REPLACE 来实现类似于 mickmackusa 的答案的可变长度字符串:

REGEXP_REPLACE(SEC_TO_TIME(duration), '^(0|:)+', '')