2010-05-25 203 views
12

我是PostgreSQL的新手(我一直使用MS SQL多年),需要将包含时间的数字列转换为HH:MM:SS格式。PostgreSQL - 如何将数字字段中的秒数转换为HH:MM:SS

我用Google搜索,发现to_char(interval '1000s', 'HH24:MI:SS')工作,所以我试图用我的字段名使用此:

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

谁能告诉我我哪里错了?

+0

'fieldname'是一个整数?此外,如果您的间隔超过一天,您会期望输出什么? – leonbloy 2010-05-25 14:49:19

+0

@leonbloy:尽管命名,HH24可以超过24。 – Quassnoi 2010-05-25 14:55:04

+0

@Quassnoi:正确。只是想知道这是海报想要的。 – leonbloy 2010-05-25 15:42:26

回答

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

,或者在你的情况

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

这是'(... ||)我错过了。非常感谢! – Shevek 2010-05-25 14:55:23

+2

或'mycolumn *“1第二个” :: interval'这将避免一遍又一遍地重新分析文本格式(虽然它不会使在这种情况下太大的实际差异) – araqnid 2010-05-25 15:14:44

+0

@Quassnoi是可能的,如果我会得到1:20 :30s然后转换成80:30请帮我 – 2014-04-24 09:20:38

9

要秒转换为HH:MM:SS

SELECT 120 * interval '1 sec'; 

您将获得00:02:00

要转换分钟到HH:MM:SS

SELECT 120 * interval '1 min'; 

您将获得02:00:00

相关问题