查询脚本中多次使用的日期变量



DB Fiddle

CREATE TABLE PaL (
id SERIAL PRIMARY KEY,
event_date DATE
);
INSERT INTO PaL 
(event_date) 
VALUES 
('2020-01-01'),
('2020-02-05'),
('2020-08-10'),
('2020-12-31');

我想运行一个查询,其中我必须多次使用相同的日期,如下所示:

SELECT 
('2021-01-01' - pl.event_date) AS column_01,
DATEADD(day, +5, '2021-01-01')::date AS column_02,
DATEADD(month, -2, '2021-01-01')::date AS column_03
FROM PaL pl;

因此,最好能够将此日期用作变量
此处的操作方式相同:MariaDB

据我所知,红移中没有变量,但也许有另一种方法可以解决这个问题
你知道吗?

Redshift没有生成列。但是,您可以使用一个视图:

CREATE VIEW v_pal as
SELECT pl.*
('2021-01-01' - pl.event_date) AS column_01,
DATEADD(day, +5, '2021-01-01')::date AS column_02,
DATEADD(month, -2, '2021-01-01')::date AS column_03
FROM PaL pl;

或者,如果你只想在一个查询中使用这个,你可以使用CTE:

with params as (
select '2021-01-01'::date as selected_date
)
select (p.selected_date - pl.event_date) AS column_01,
dateadd(day, +5, p.selected_date )::date AS column_02,
dateadd(month, -2, p.selected_date )::date AS column_03
from params p cross join
PaL pl

Redshift具有SYSDATE((函数,该函数返回当前事务的开始时间。与返回当前语句的时间的GETDATE((相反。如果使用SYSDATE((,并且查询位于同一事务中,则它们将使用相同的时间戳。

最新更新