postgresql - 将日期附加到 Proc 中的表名
问题描述
我创建了一个函数来获取 yyyymmdd 格式的当前日期值。
create or replace function currdate() returns text as $$ select 'account_'||TO_CHAR(current_date , 'yyyymmdd');
$$ LANGUAGE sql;
现在我必须编写一个 Proc 来将此日期 'yyyymmdd' 附加到创建快照表中,该快照表将在该月的第一天和最后一天创建。我写了下面的过程
create or replace procedure proc_1() AS $$
declare
dttoday text := currdate();
int_check int := checkint();
begin
if int_check = 1 then
create table **schema.snapshot_currdate** as (select * from schema1.original_table); end if;
end;
$$
language plpgsql;
此处创建表时:snapshot_currdate我需要将其创建为名称snapshot_yyyymmdd(执行日期) 声明的变量 int_check 是一个检查其每月的第一天或最后一天的函数,它将返回整数值 1
有任何想法吗?
解决方案
仅供参考,Postgres 9.1 比 EOL 晚了四年。就像是:
currdate() returns text as $$ select 'account_'||TO_CHAR(current_date , 'yyyymmdd');
$$ LANGUAGE sql;
CREATE OR REPLACE PROCEDURE public.proc_1()
LANGUAGE plpgsql
AS $procedure$
declare
dttoday text := currdate();
begin
EXECUTE 'create table '|| quote_ident('public')||'.'||quote_ident('snapshot_'||split_part(dttoday, '_', 2))||'()';
RAISE NOTICE '%', dttoday;
end;
$procedure$
那split_part
是因为 currdate()
退货account_yyyymmdd
,你说你想要snapshot_yyyymmdd
。有关动态命令的更多信息,请参见此处:
https://www.postgresql.org/docs/current/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN
推荐阅读
- iis - 为什么我的实体框架 dll 没有加载?
- reactjs - 为什么我的代码没有从另一个文件导入到主文件?
- python - 离线使用odoo并在使用的设备再次连接到互联网时传输数据
- typescript - 更新具有不同类型属性的对象的函数的重载错误
- python - tkinter,将输入保存为变量
- c# - C# - 解码服务器响应(字符串中有多少个位置是 1 个八位字节?)
- java - Java多线程,捕获更新的布尔变量
- javascript - 在jQuery中通过搜索查询过滤呈现列表项的问题
- solr - 如何在solr中索引相关表
- javascript - 请求时未播放 Expressjs 音频流