Mysql
 sql >> Database >  >> RDS >> Mysql

Contare le ore usando MySQL

Ho pensato di postarti la risposta nella prospettiva di riassumere i problemi relativi al valore del tempo che gli sviluppatori hanno dovuto affrontare finora. Non si tratta solo di formattazione.

Potresti aver notato o meno che la somma delle possibilità del tuo tempo totale può essere calcolata erroneamente dal motore. Un ulteriore motore MySQL potrebbe restituire null anche se hai valori.

Quando si aggiungono/aggregano i valori temporali, questi vengono convertiti in un numero e i risultati saranno in formato numerico. Se tenti di sommare valori di tempo come i seguenti:

per esempio. 01:38:50, 03:40:25 --> dovrebbe idealmente risultare in 05:19:15

  • Se esegui Somma (i due precedenti) --> ottieni un numero
  • Se usi CAST(Sum(the above two) AS TIME) --> ottieni null
  • Ci sono altre due possibilità mostrate nel mio frammento di codice.

Riferimento al codice di esempio . Ti mostrerà i diversi risultati di cui abbiamo appena discusso. Per ora, sembra che la formattazione a tre vie potrebbe aiutare.

time_format(sec_to_time(sum(time_to_sec(logged_duration))),'%h:%i:%s') total_log_duration

Il bug segnalato a MySQL non è stato ancora corretto.