2010-05-12 75 views
7

Tengo un valor de tiempo 04:30:25 que quiero convertir a segundos. ¿Hay alguna función dedicada para hacer esto?Convertir tiempo a segundos en PostgreSQL

Sé que podemos extraer horas, minutos y segundos, y luego calcular los segundos.

SELECT EXTRACT(hour FROM t)*60*60 
     + EXTRACT(minutes FROM t)*60 
     + EXTRACT(seconds FROM t) 
    FROM test; 

Pero quiero alguna otra manera ...

Respuesta

3

Quizás pueda hacerlo funcionar (solo una configuración rápida, por favor revise y cambie según sea necesario)?

CREATE OR REPLACE FUNCTION to_seconds(t text) 
    RETURNS integer AS 
$BODY$ 
DECLARE 
    hs INTEGER; 
    ms INTEGER; 
    s INTEGER; 
BEGIN 
    SELECT (EXTRACT(HOUR FROM t::time) * 60*60) INTO hs; 
    SELECT (EXTRACT (MINUTES FROM t::time) * 60) INTO ms; 
    SELECT (EXTRACT (SECONDS from t::time)) INTO s; 
    SELECT (hs + ms + s) INTO s; 
    RETURN s; 
END; 
$BODY$ 
    LANGUAGE 'plpgsql'; 

A continuación, sólo utilizarlo en sus consultas:

SELECT to_seconds('04:30:25'); 

Devuelve:

16225 
22

¿Ha intentado utilizar:

SELECT EXTRACT(EPOCH FROM INTERVAL '04:30:25'); 

Si eso no funciona, usted podría tratar de prefijar el valor de su tiempo con '1970- 01-01' y tratar:

SELECT EXTRACT(EPOCH FROM TIMESTAMP '1970-01-01 04:30:25'); 

No se ha probado pero parece que estos son sus únicas opciones. Probablemente.

7

puede omitir época o intervalo, es decir:

SELECT EXTRACT(EPOCH FROM column) from table 
+0

Utilicé 'FLOOR (EXTRACT (EPOCH FROM column))' para redondear y obtener un entero – Josh

0

Si desea emular elde MySQL 0 función, se podría utilizar una función como esta:

CREATE OR REPLACE FUNCTION time_to_sec(t text) 
    RETURNS integer AS 
$BODY$ 
DECLARE 
    s INTEGER; 
BEGIN 
    SELECT (EXTRACT (EPOCH FROM t::interval)) INTO s; 
    RETURN s; 
END; 
$BODY$ 
    LANGUAGE 'plpgsql'; 

tiene la ventaja de que funcionará con intervalos de PostgreSQL (es decir: más de períodos de 24 horas), lo que podría romper la función to_seconds en la respuesta aceptada .

Cuestiones relacionadas