2017-10-18 105 views
0

我想总结和减去两个或更多的时间戳列。我怎样才能总结/减去同一行的时间值

我使用PostgreSQL和我有一个结构,你可以看到: enter image description here

我不能圆的几分钟或几秒钟,所以我想提取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不存在

这是怎么回事? 我可以加/减时间值从同一行吗?

+0

你能发表这个表的实际结构吗?从流行的工具,如psql或pgadmin。 –

回答

1

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;