2011-10-07 1 views
6

Sto cercando di calcolare la media di un paio di righe con un datetime tipo di dati (formato datetime standard).
Come posso farlo?medio del tipo di dati datetime

+0

convertirli in secondi, calcolare AVG e convertire risultato secondi indietro – zerkms

+0

Per una domanda del genere si dovrebbe davvero specificare il RDBMS. Hanno tutti caratteristiche speciali quando si tratta di timestamp. –

risposta

9

Convertire il datetime ad un float. Lo standard SQL definisce questo come il numero di giorni dal 1900, quindi dovrebbe essere abbastanza portabile. Per esempio:

declare @t table (dt datetime) 
insert @t select '1950-01-01' 
union all select '1960-01-01' 

select cast(avg(cast(dt as float)) as datetime) from @t 

Questo risultato è 1955-01-01. Example at SE Data.

2

Questo è il modo per ottenere la media di una colonna DateTime in MySql:

create temporary table table_1 (
    aDate DateTime 
); 

insert into table_1 values 
    ('2000-01-01 00:00:00'), 
    ('2010-01-01 00:00:00'); 

select CAST(avg(aDate) as DateTime) from table_1; 
-- Result: "2005-01-01 00:00:00" 
2

In PostgreSQL si potrebbe:

SELECT to_timestamp(avg(EXTRACT(EPOCH FROM my_timestamp))) 
    FROM my_tbl; 

Maggiori informazioni nel manuale di multa here.