PGSQL将时间转换为秒

时间:2017-01-29 16:20:21

标签: sql postgresql

为什么我的代码出错

SELECT EXTRACT(SECOND FROM TIME total_time) from tr_empl_quiz;

我在使用此代码时遇到错误

SELECT EXTRACT(EPOCH FROM TIMESTAMP total_time) from tr_empl_quiz;

这是我的表格内容tr_empl_quiz,类型数据是没有时区的时间

total_time
============
00:01:00

00:02:00

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

使用extract()功能时,您将获得日期/时间部分的值。在您的示例中,秒数为零,因此这就是您所获得的。

Postgres使用可能不直观的名称epoch来支持你想要的东西。 Epoch返回秒数。对于日期或日期时间值,这是自1970-01-01(Unix时间的开始)以来的数字。对于timeinterval,它是该期间的总秒数。所以:

select extract(epoch from time '00:02:00')

返回120。

令人惊讶的是,epoch的{​​{3}}未提及它适用于time数据类型。功能与功能完全一致。文档(通常非常优秀)忽略了time;或time被视为interval

对于表格中的列,您只需:

SELECT EXTRACT(EPOCH FROM total_time) 
FROM tr_empl_quiz;

或:

SELECT EXTRACT(EPOCH FROM CAST(total_time as time)) 
FROM tr_empl_quiz;

取决于你想要的东西。