繁体   English   中英

如何对同一行的时间值求和/相减

[英]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;

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

列ARRIVED_AT不存在

为什么会这样呢? 我可以对同一行的时间值求和/相减吗?

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

以下脚本可以实现您所期望的功能,因此您查询的表结构有些符合您的期望。

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM