我如何 sum/subtract 来自同一行的时间值
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;
在此示例中,我会收到如下错误:
Column ARRIVED_AT does not exist
为什么会这样?
我可以 sum/subtract 来自同一行的时间值吗?
ARRIVED_AT
是计算值而不是列吗?您是如何 运行 得到您发布的显示这些列的查询结果图像的?
以下脚本符合您的预期,因此您查询的 table 的结构有些问题 不是您预期的。
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;
我想对两个或多个时间戳列进行求和和相减。
我使用的是 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;
在此示例中,我会收到如下错误:
Column ARRIVED_AT does not exist
为什么会这样? 我可以 sum/subtract 来自同一行的时间值吗?
ARRIVED_AT
是计算值而不是列吗?您是如何 运行 得到您发布的显示这些列的查询结果图像的?
以下脚本符合您的预期,因此您查询的 table 的结构有些问题 不是您预期的。
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;