2010-05-25 8 views
12

PostgreSQL'e (MS SQL'i uzun yıllardır kullanıyorum) yeniyim ve saniyeler içinde bir süreyi içeren bir sayısal sütunu dönüştürmem gerekiyor SS: AA: SS biçimi.PostgreSQL - Nümerik bir alandaki saniyeleri HH: MM'ye dönüştürme: SS:

Ben google'dan ve to_char(interval '1000s', 'HH24:MI:SS') yüzden benim alan adı ile bu kullanmak çalışılıyor çalıştığını bulduk:

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

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

kimse bana gösterir misin bir hatayı veren bir hatayı verir Nerede yanlış gidiyorum? MM:

+0

'Fieldname' bir tam sayı alırsınız? Ayrıca, bir günden daha büyük bir aralığınız varsa, hangi çıktıyı bekliyorsunuz? – leonbloy

+0

@leonbloy: 'HH24', ismine rağmen 24'ün ötesine geçebilir. – Quassnoi

+0

@Quassnoi: Doğru. Sadece posterin istediği bu olup olmadığını merak ettim. – leonbloy

cevap

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

veya sizin durumunuzda

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

'idi (... || ...) 'Ben eksikti. Çok teşekkürler! – Shevek

+2

veya 'mycolumn * '1 saniye' :: interval 'metin biçimini tekrar tekrar tekrar izlemekten kaçınacaktır (bu durumda çok pratik bir fark yaratmasa da) – araqnid

+0

@Quassnoi eğer 1: 20 : 30'lar sonra 80: 30'a dönüş lütfen bana yardım edin –

9

HH saniye dönüştürmek için SS

SELECT 120 * interval '1 sec'; 

dakika dönüştürmek için 00:02:00

Sen alacak HH: MM: SS:

SELECT 120 * interval '1 min'; 

02:00:00

İlgili konular