PDA

View Full Version : [MySQL] Come memorizzare tempi in ore, minuti, secondi, centesimi ??


chano
02-11-2009, 13:52
sono agli inizi con php e database ma, se finora ho sempre risolto tutto tramite google, stavolta non ci riesco proprio e devo ricorrere a voi...
dovrei memorizzare in un comune database mysql i tempi di alcune prestazioni sportive composti da minuti, secondi e centesimi di secondo, mi sapete consigliare un modo "decente" per farlo?

perché provando a usare il solito formato time hh:mm:ss per memorizzare mm(=h*60+mm):ss:cc non si riesce visto che inserendo un valore di centesimi (al posto dei secondi) superiore a 60 restituisce un campo vuoto (00:00:00)…
Leggendo un po' su internet mi è sembrato di capire che si possa fare memorizzando il tempo in formato timestamp, ma che io sappia il timestamp ha come “unità” il secondo, non sottomultipli.
Altra cosa letta su internet è che sia possibile memorizzare la parte decimale dei secondi con la dicitura secondi.sottomultipli al momento dell’inserimento; ho provato, ma nel momento in cui estraggo il contenuto del campo la parte decimale sembra non esistere...

Ho pensato che posso sempre creare 4 campi diversi, uno per ogni unità di tempo, o un intero lungo che sia somma di ore, minuti, secondi e centesimi in valori rapportati ai centesimi (creando una sorta di formato timestamp basato sui centesimi interpretato a modo mio), ma magari potevate suggerirmi una soluzione meno “spartana”…

grazie in anticipo a tutti!!

euphyllia87
02-11-2009, 18:31
sono agli inizi con php e database ma, se finora ho sempre risolto tutto tramite google, stavolta non ci riesco proprio e devo ricorrere a voi...
dovrei memorizzare in un comune database mysql i tempi di alcune prestazioni sportive composti da minuti, secondi e centesimi di secondo, mi sapete consigliare un modo "decente" per farlo?

perché provando a usare il solito formato time hh:mm:ss per memorizzare mm(=h*60+mm):ss:cc non si riesce visto che inserendo un valore di centesimi (al posto dei secondi) superiore a 60 restituisce un campo vuoto (00:00:00)…
Leggendo un po' su internet mi è sembrato di capire che si possa fare memorizzando il tempo in formato timestamp, ma che io sappia il timestamp ha come “unità” il secondo, non sottomultipli.
Altra cosa letta su internet è che sia possibile memorizzare la parte decimale dei secondi con la dicitura secondi.sottomultipli al momento dell’inserimento; ho provato, ma nel momento in cui estraggo il contenuto del campo la parte decimale sembra non esistere...

Ho pensato che posso sempre creare 4 campi diversi, uno per ogni unità di tempo, o un intero lungo che sia somma di ore, minuti, secondi e centesimi in valori rapportati ai centesimi (creando una sorta di formato timestamp basato sui centesimi interpretato a modo mio), ma magari potevate suggerirmi una soluzione meno “spartana”…

grazie in anticipo a tutti!!

Si l'unix timestamp si basa sui secondi. Secondo me devi prendere i secondi e calcolarne i sotto multipli :)

chano
02-11-2009, 22:51
Si l'unix timestamp si basa sui secondi. Secondo me devi prendere i secondi e calcolarne i sotto multipli :)

intendi salvare fino ai secondi in timestamp e fare un campo a parte per i centesimi?

cdimauro
03-11-2009, 03:30
Devi usare il tipo DATETIME.

chano
03-11-2009, 15:51
Devi usare il tipo DATETIME.

ho controllato la documentazione ed effettivamente potrebbe fare al caso mio, ma non ho capito alcune cose

-che formato deve avere la stringa che gli passo nella query?
-la stringa che mi restituisce in lettura comprende gia di suo i microsecondi o devo recuperarli in qualche altro modo?

grazie!

euphyllia87
03-11-2009, 16:03
ho controllato la documentazione ed effettivamente potrebbe fare al caso mio, ma non ho capito alcune cose

-che formato deve avere la stringa che gli passo nella query?
-la stringa che mi restituisce in lettura comprende gia di suo i microsecondi o devo recuperarli in qualche altro modo?

grazie!

Mi pare questo: 'YYYY-MM-DD HH:MM:SS

cdimauro
03-11-2009, 16:26
Sì. Per i millisecondi basta aggiungere .mmm alla fine dei secondi.

euphyllia87
03-11-2009, 17:39
Sì. Per i millisecondi basta aggiungere .mmm alla fine dei secondi.

grazie, servirà anche a me ;)

chano
03-11-2009, 21:07
grazie per le risposte! quindi riepilogando

inserimento:
INSERT INTO tabella(tempo) VALUES 0000-00-00 HH:MM:SS.mmm

lettura:
mi ritrovo una stringa con lo stesso formato YYYY-MM-DD HH:MM:SS.mmm

giusto?

maulattu
03-11-2009, 21:36
sì ;)

chano
04-11-2009, 22:37
ooook! grazie del chiarimento :D

quando ho tempo (è un progetto che sto portando avanti nel tempo libero) provo e vi tengo informati se finalmente riuscirò in questa impresa :cool: :D