2010-05-25 23 views
12

Soy nuevo en PostgreSQL (he estado usando MS SQL durante muchos años) y necesito convertir una columna numérica que contiene un tiempo en segundos para HH: MM: formato SS.PostgreSQL - Cómo convertir segundos en un campo numérico a HH: MM: SS

He buscado en Google y encontró que to_char(interval '1000s', 'HH24:MI:SS') funciona de modo que estoy tratando de usar esto con mi nombre de campo:

to_char(fieldname, 'HH24:MI:SS') da un error cannot use "S" and "PL"/"MI"/"SG"/"PR" together

to_char(fieldname::interval, 'HH24:MI:SS') da un error cannot cast type numeric to interval

¿Alguien puede mostrar donde me estoy equivocando?

+0

'fieldname' es un número entero? Además, ¿qué salida esperas si tienes un intervalo mayor a un día? – leonbloy

+0

@leonbloy: 'HH24' puede ir más allá de 24, a pesar de su nombre. – Quassnoi

+0

@Quassnoi: Correcto. Solo me preguntaba si eso era lo que quería el afiche. – leonbloy

Respuesta

22
SELECT TO_CHAR('1000 second'::interval, 'HH24:MI:SS') 

o, en su caso

SELECT TO_CHAR((mycolumn || ' second')::interval, 'HH24:MI:SS') 
FROM mytable 
+0

que era el '(... || ...)' que me faltaba. ¡Muchas gracias! – Shevek

+2

o 'mycolumn * '1 second' :: interval' que evitará volver a examinar el formato de texto una y otra vez (aunque en este caso no hace mucha diferencia práctica) – araqnid

+0

@Quassnoi es posible si obtendré 1:20 : 30s luego convierte a 80:30 por favor ayúdenme –

9

Convertir segundos a HH: MM: SS

SELECT 120 * interval '1 sec'; 

Usted recibirá 00:02:00

Para convertir minutos a HH: MM: SS

SELECT 120 * interval '1 min'; 

Recibirá 02:00:00

Cuestiones relacionadas