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((,并且查询位于同一事务中,则它们将使用相同的时间戳。