Postgresql 间隔';0天';和';0天';::赛后间歇期
我试图使用循环在psql中创建一个包含日期列表的基本表。代码如下所示Postgresql 间隔';0天';和';0天';::赛后间歇期,postgresql,Postgresql,我试图使用循环在psql中创建一个包含日期列表的基本表。代码如下所示 DO $$ DECLARE counter INTEGER :=0; date_interval VARCHAR(250) :='0 DAYS'; BEGIN DROP TABLE IF EXISTS temp_dates; CREATE TABLE temp_dates ( date DATE ); WHILE counter < 12 LOOP date
DO $$
DECLARE counter INTEGER :=0;
date_interval VARCHAR(250) :='0 DAYS';
BEGIN
DROP TABLE IF EXISTS temp_dates;
CREATE TABLE temp_dates (
date DATE
);
WHILE counter < 12 LOOP
date_interval := counter || ' DAYS';
INSERT INTO temp_dates
--SELECT DATE_TRUNC('DAYS', CURRENT_DATE) - date_interval :: INTERVAL;
SELECT (DATE_TRUNC('DAYS', CURRENT_DATE)) - (INTERVAL date_interval);
counter := counter + 1;
END LOOP;
END $$;
工作。但以下方法不起作用
SELECT (DATE_TRUNC('DAYS', CURRENT_DATE)) - (INTERVAL date_interval);
基本上唯一的区别是日期间隔::间隔与间隔日期间隔
但是,当我直接执行间隔“2天”之类的操作时,它是有效的,但当我使用变量时,它会失败
所以我的问题是双重的
INTERVAL '0 days'
表示常量,也就是说,字符串必须是文本
它不是类型转换的语法,例如'0 days'::interval
,它允许您更改任意表达式的类型
INTERVAL '0 days'