2017-10-18 131 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;