我如何 sum/subtract 来自同一行的时间值

How can I sum/subtract time values from same row

我想对两个或多个时间戳列进行求和和相减。

我使用的是 PostgreSQL,我的结构如您所见:

我不能四舍五入分钟或秒,所以我试图提取 EPOCH 并在之后进行操作,但我总是得到一个错误,因为第一个 EXTRACT 识别列,但是当我将第二个 EXTRACT 放在同一个 SQL 命令中时,我收到一条错误消息,指出第二个列不存在。

我举个例子:

SELECT 
    EXAMPLE.PERSON_ID,
    COALESCE(EXTRACT(EPOCH from EXAMPLE.LEFT_AT),0) +
    COALESCE(EXTRACT(EPOCH from EXAMPLE.ARRIVED_AT),0) AS CREDIT
FROM
    EXAMPLE
WHERE 
    EXAMPLE.PERSON_ID = 1;

在此示例中,我会收到如下错误:

Column ARRIVED_AT does not exist

为什么会这样? 我可以 sum/subtract 来自同一行的时间值吗?

ARRIVED_AT 是计算值而不是列吗?您是如何 运行 得到您发布的显示这些列的查询结果图像的?

以下脚本符合您的预期,因此您查询的 table 的结构有些问题 不是您预期的

CREATE SCHEMA so46801016;
SET search_path=so46801016;
CREATE TABLE trips (
  person_id serial primary key,
  arrived_at time,
  left_at time
);

INSERT INTO trips (arrived_at, left_at) VALUES
  ('14:30'::time, '19:30'::time)
, ('11:27'::time, '20:00'::time)
;

SELECT
    t.person_id,
    COALESCE(EXTRACT(EPOCH from t.left_at),0) +
    COALESCE(EXTRACT(EPOCH from t.arrived_at),0) AS credit
FROM
    trips t;

DROP SCHEMA so46801016 CASCADE;