Convert seconds to days, hours, minutes, seconds (MySQL)
Asked Answered
U

5

13

Example:

seconds ="1015557";

Result should be:

11days 18h:05m:57s

How can do this in MySQL?

Uncial answered 26/12, 2016 at 11:46 Comment(2)
possible duplicate: #8194368Hobbs
Nope, it's not.Mizzle
M
11
select concat(
    format(floor(s / @day),0),
    'days ',
    time_format(sec_to_time(s % @day),'%Hh:%im:%ss') 
  ) formatted_date
from (select 1015557 s) t, (select @day = 3600 * 24);

produces:

+--------------------+                                                                                                                               
| days               |                                                                                                                               
+--------------------+                                                                                                                               
| 11days 18h:05m:57s |                                                                                                                               
+--------------------+
Mizzle answered 26/12, 2016 at 12:5 Comment(0)
H
11

You can use a query like this:

SELECT
  DATE_FORMAT(date('1970-12-31 23:59:59')
   + interval 1015557 second,'%j days %Hh:%im:%ss') as result;

sample

mysql>     SELECT
    ->       DATE_FORMAT(date('1970-12-31 23:59:59')
    ->        + interval 1015557 second,'%j days %Hh:%im:%ss') as result;
+----------------------+
| result               |
+----------------------+
| 011 days 18h:05m:57s |
+----------------------+
1 row in set (0,00 sec)

mysql>
Harim answered 26/12, 2016 at 12:24 Comment(1)
Hello @Bernd, i thank you a lot for this solution. But i found an error with this value: 81865. I get: 365 days 22h:44m:25s - I think that this is an error. Do you have an idea? Here the fiddle: sqlfiddle.com/#!9/9eecb/89478Sculpturesque
B
9

You can try this out:

SET @seconds = 1015557;
SELECT CONCAT(
            FLOOR(TIME_FORMAT(SEC_TO_TIME(@seconds), '%H') / 24), 'days ',
            MOD(TIME_FORMAT(SEC_TO_TIME(@seconds), '%H'), 24), 'h:',
            TIME_FORMAT(SEC_TO_TIME(@seconds), '%im:%ss')
        )
AS Result

Result should be:

11days 18h:05m:57s

Hopefully this helps!.

Bandoleer answered 26/12, 2016 at 14:36 Comment(0)
M
3
SELECT *, 
CONCAT( FLOOR(sec/3600),"hour ", FLOOR(MOD(sec,3600)/60),"min",MOD(sec,60),"sec") 
FROM table_1
Momentum answered 24/9, 2020 at 6:56 Comment(4)
Hi, please edit your answer to put the code preferably in a Stack Snippet.Autodidact
Please take a few minutes to read How to Answer to get some useful tips on answering questions. Esp. the part "fuller explanations are better". Also, you need a very good reason to answer an old, well answered question. Without any explanation in that direction answers like this tend to get deleted in the review process.Baugher
This does not include "days".Brierwood
Sorry, I just edited itMomentum
L
1

If one is interested in fraction of seconds, the following combines the responses from Kent Aguilar and Steven Yang.

SELECT CONCAT(
  FLOOR(TIME_FORMAT(SEC_TO_TIME(@seconds), '%H') / 24), 'days ',
  MOD(TIME_FORMAT(SEC_TO_TIME(@seconds), '%H'), 24), 'h:',
  FLOOR(MOD(@seconds,3600)/60), 'm:',
  MOD(@seconds,60), 's'
) AS Result
Lesley answered 26/4, 2022 at 14:0 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.