2010-05-25 22 views
12

Sono nuovo a PostgreSQL (utilizzo MS SQL da molti anni) e devo convertire una colonna numerica che contiene un tempo in secondi per HH: MM: formato SS.PostgreSQL - Come convertire i secondi in un campo numerico in HH: MM: SS

Ho Googled e trovato che to_char(interval '1000s', 'HH24:MI:SS') funziona così sto cercando di usare questo con il mio nome di campo:

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

to_char(fieldname::interval, 'HH24:MI:SS') dà un errore cannot cast type numeric to interval

Qualcuno mi può mostrare dove sto andando male?

+0

'fieldname' è un numero intero? inoltre, quale output ti aspetti se hai un intervallo maggiore di un giorno? – leonbloy

+0

@leonbloy: 'HH24' può andare oltre 24, nonostante il suo nome. – Quassnoi

+0

@Quassnoi: corretto. Mi sono chiesto se fosse quello che voleva il manifesto. – leonbloy

risposta

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

o, nel tuo caso

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

era il '(... || ...)' Mi mancava. Grazie molto! – Shevek

+2

o 'mycolumn * '1 secondo' :: interval' che eviterà di ripetere ripetutamente il formato testuale (anche se in questo caso non fa molta differenza) – araqnid

+0

@Quassnoi è possibile se ottengo 1:20 : 30s poi convertire in 80:30 per favore aiutami –

9

Per convertire secondi HH: MM: SS

SELECT 120 * interval '1 sec'; 

Otterrete 00:02:00

Per convertire minuti a HH: MM: SS

SELECT 120 * interval '1 min'; 

Otterrai 02:00:00

Problemi correlati