webForumDet fria alternativet

omvandla 5057782.9245 sek till formatet hh:mm:ss mysql databas

Databaser & SQL

3 svar · 687 visningar · startad av swingman

Medlem sedan jan. 200686 inlägg
Frågan#1

hej kan nån ge mig råd vad jag skulle kunna lägga till i följande sql sats för att omvandla sekunder till formatet hh:mm:ss.

select name_,d.id_,
min(UNIX_TIMESTAMP(i.end_) - UNIX_TIMESTAMP(i.start_)) as minduration,
max(UNIX_TIMESTAMP(i.end_) - UNIX_TIMESTAMP(i.start_)) as maxduration,
avg(UNIX_TIMESTAMP(i.end_) - UNIX_TIMESTAMP(i.start_))as avgduration
from jbpm_processdefinition d, jbpm_processinstance i
where d.id_=i.processdefinition_ and end_ is not null;

jag har provat att lägga till sec_to_time() men den funktionen är begränsad till 838:59:59
Blir det mer än så så blir det fel.

Medlem sedan maj 20011 826 inlägg
#2

Istället för UNIX_TIMESTAMP() kanske du kan använda någon annan datumfunktion.
Ta en titt på DATE_SUB(): http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add

Medlem sedan jan. 200686 inlägg
#3

Jag har tittat på de olika functionerna som finns. Bland annat date_sub() och det är blir alltså fel då det överstiger 838 timmar. Vet inte varför just denna gräns (att vara exakt 838.59.59).
Lösningen kanske blir att att köra med cast eller convert. Har inte lyckats med det men får se...

Medlem sedan juli 200012 978 inlägg
#4

Plocka bort merparten av sekunder till dagar! (mod (3600*24))

255 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)