代码之家  ›  专栏  ›  技术社区  ›  Cleiton Ribeiro

如何从同一行中求和/减去时间值

  •  0
  • Cleiton Ribeiro  · 技术社区  · 8 年前

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

    enter image description here

    我不能舍入分或秒,所以我试图提取 EPOCH 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;
    

    在本例中,我会得到如下错误:

    到达的列不存在

    为什么会这样? 我可以从同一行中求和/减去时间值吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Dave Gray Adam Rosenfield    8 年前

    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;