我试图在select format((查询中获得一个在引号之间格式化的日期:
select format('CREATE TABLE temporary_table AS
SELECT id FROM table WHERE created >=%I ORDER BY 1 ASC LIMIT 1','2021-04-01');
我得到这个:
CREATE TABLE temporary_table AS
SELECT table FROM table WHERE created >="2021-04-01" ORDER BY 1 ASC LIMIT 1;
我想实际得到单引号之间的日期(因为这在执行时不起作用(
我怎样才能做到这一点?
对于单引号值,您需要format()
的说明符%L
。类似:
SELECT format('CREATE TABLE temporary_table AS
SELECT id FROM table WHERE created >= %L ORDER BY 1 LIMIT 1','2021-04-01');
参见:
- 在PostgreSQL中插入带单引号的文本
当然,只有当您参数化输入时,这才有意义。您不会麻烦使用format()
作为一个固定的开始日期。