2010-05-25 13 views
12

Je suis nouveau à PostgreSQL (j'utilise MS SQL depuis de nombreuses années) et j'ai besoin de convertir une colonne numérique qui contient un temps en secondes pour HH: MM: format SS.PostgreSQL - Comment convertir les secondes dans un champ numérique en HH: MM: SS

J'ai googlé et trouvé que to_char(interval '1000s', 'HH24:MI:SS') fonctionne si je tente de l'utiliser avec mon nom sur le terrain:

to_char(fieldname, 'HH24:MI:SS') donne une erreur cannot use "S" and "PL"/"MI"/"SG"/"PR" together

to_char(fieldname::interval, 'HH24:MI:SS') donne une erreur cannot cast type numeric to interval

Quelqu'un peut-il me montrer où je vais mal?

+0

'fieldname' est un nombre entier? De plus, quel résultat attendez-vous si vous avez un intervalle supérieur à un jour? – leonbloy

+0

@leonbloy: 'HH24' peut aller au-delà de 24, malgré son nom. – Quassnoi

+0

@Quassnoi: Correct. Je me demandais juste si c'était ce que l'affiche voulait. – leonbloy

Répondre

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

ou, dans votre cas

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

c'était le '(... || ...)' il me manquait. Merci beaucoup! – Shevek

+2

ou 'mycolumn * '1 seconde' :: interval' qui évitera de reparer le format textuel encore et encore (bien que cela ne fasse pas beaucoup de différence pratique dans ce cas) – araqnid

+0

@Quassnoi est-ce possible si j'obtiens 1:20 : 30s puis convertir en 80:30 s'il vous plaît aidez-moi –

9

Pour convertir secondes à HH: MM: SS

SELECT 120 * interval '1 sec'; 

Vous obtiendrez 00:02:00

Pour convertir minutes à HH: MM: SS

SELECT 120 * interval '1 min'; 

Vous obtiendrez 02:00:00

Questions connexes