我正在尝试使用循环在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_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 $$;
Run Code Online (Sandbox Code Playgroud)
在上面的查询中
SELECT DATE_TRUNC('DAYS', CURRENT_DATE) - date_interval :: INTERVAL;
Run Code Online (Sandbox Code Playgroud)
作品.但以下不起作用
SELECT (DATE_TRUNC('DAYS', CURRENT_DATE)) - (INTERVAL date_interval);
Run Code Online (Sandbox Code Playgroud)
基本上唯一的区别是date_interval :: INTERVAL vs INTERVAL date_interval
但是当我直接做INTERVAL'2天'这样的事情时它会起作用,但是当我使用变量时它会失败.
所以我的问题是双重的
我确信我在遗漏引号时遗漏了一些相当明显的东西,但我不确定.任何帮助将不胜感激.
正如文档清楚地说明了语法
INTERVAL '0 days'
Run Code Online (Sandbox Code Playgroud)
是常量,也就是说,字符串必须是文字.
它不是类型转换的语法'0 days'::interval,它允许您更改任意表达式的类型.
| 归档时间: |
|
| 查看次数: |
233 次 |
| 最近记录: |