2010-05-25 8 views
12

Jestem nowy w PostgreSQL (używam MS SQL przez wiele lat) i muszę przekonwertować kolumnę liczbową, która zawiera czas w sekundach do HH: MM: format SS.PostgreSQL - Jak przekonwertować sekundy w polu numerycznym na GG: MM: SS

mam Googled i stwierdziła, że ​​to_char(interval '1000s', 'HH24:MI:SS') działa tak ja próbuje użyć tego z moim nazwiskiem polu:

to_char(fieldname, 'HH24:MI:SS') daje błąd cannot use "S" and "PL"/"MI"/"SG"/"PR" together

to_char(fieldname::interval, 'HH24:MI:SS') daje błąd cannot cast type numeric to interval

Czy ktoś może mi pokazać gdzie idę źle?

+0

'fieldname' jest liczbą całkowitą? dalej, jakiej mocy wyjściowej oczekujesz, jeśli masz interwał większy niż jeden dzień? – leonbloy

+0

@leonbloy: 'HH24' może przekroczyć 24, pomimo swojej nazwy. – Quassnoi

+0

@Quassnoi: Prawidłowo. Zastanawiałam się, czy tego właśnie chciał plakat. – leonbloy

Odpowiedz

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

lub, w przypadku

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

to było "(... || ...)" Brakowało mi. Wielkie dzięki! – Shevek

+2

lub 'mycolumn * '1 sekunda' :: interwał', który pozwoli uniknąć wielokrotnego powtarzania formatu tekstowego (choć nie ma to zbytniej różnicy praktycznej w tym przypadku) – araqnid

+0

@Quassnoi jest to możliwe, jeśli dostanę 1:20 : 30s, a następnie przekonwertować na 80:30 proszę mi pomóc –

9

Aby przekonwertować sekund na GG: MM: SS

SELECT 120 * interval '1 sec'; 

Dostaniesz 00:02:00

Aby przekonwertować minut do GG: MM: SS

SELECT 120 * interval '1 min'; 

Otrzymasz 02:00:00

Powiązane problemy