PGSQL将时间转换为秒

PGSQL将时间转换为秒,sql,postgresql,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_emp_测验,类型数据是没有时区的时间 total_time ============ 00:01:00 00:02:00 当您使用extract()函数时,您将获得日

为什么我的代码出错

SELECT EXTRACT(SECOND FROM TIME total_time) from tr_empl_quiz;
我用这个代码出错了

SELECT EXTRACT(EPOCH FROM TIMESTAMP total_time) from tr_empl_quiz;
这是我的表格内容tr_emp_测验,类型数据是没有时区的时间

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

00:02:00


当您使用
extract()
函数时,您将获得日期/时间部分的值。在你的例子中,秒是零,所以这就是你得到的

Postgres确实支持您想要的,使用了可能不直观的名称
epoch
<代码>历元返回秒数。对于日期或日期时间值,这是自1970-01-01(Unix时间的开始)以来的数字。对于
时间
间隔
而言,它是该期间的总秒数。因此:

select extract(epoch from time '00:02:00')
返回120

令人惊讶的是,for
epoch
没有提到它对
time
数据类型有效。该功能与该功能的功能完全一致。要么文档(通常非常优秀)忽略了时间;或
时间
被视为
间隔

对于表中的列,只需执行以下操作:

SELECT EXTRACT(EPOCH FROM total_time) 
FROM tr_empl_quiz;
或:


取决于你想要什么。

什么是
时间
关键字?只需
extract(从总时间算起的秒数)
就可以了。extract(从总时间算起的秒数)我在60秒和120秒内得到0值,但如果我像这样硬编码extract(从时间'00:01:00'算起的秒数),我得到60我成功尝试选择extract(从时间'00:02:00'算起的历元数),但如果我从表中设置字段,该怎么办
SELECT EXTRACT(EPOCH FROM CAST(total_time as time)) 
FROM tr_empl_quiz;