[英]How can I sum/subtract time values from same row
我想求和减去两个或更多的时间戳列。
我无法舍入分钟或秒,所以我尝试提取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.