postgresql - 在 COMMENT ON TABLE 中放置时间戳

标签 postgresql timestamp dynamic-sql ddl postgresql-9.4

我经常在 PostgreSQL (9.4.1) 中重新创建一个表,就像这样:

DROP TABLE IF EXISTS test.foo;
CREATE TABLE test.foo AS
  SELECT * FROM test.dagi_kommune
  WHERE ST_Area(wkb_geometry) < 500;

我想在表中添加注释,说明表的创建时间。创建基本评论没有问题,如下所示:

COMMENT ON TABLE test.foo IS 'Table create date: ';

而且我还可以生成一个独立的时间戳,像这样:

SELECT to_char(LOCALTIMESTAMP, 'YYYY-MM-DD HH:MI:SS');

但如果我尝试将时间戳放入评论中,如下所示:

COMMENT ON TABLE test.foo IS to_char(LOCALTIMESTAMP, 'YYYY-MM-DD HH:MI:SS');

我得到以下响应:

ERROR:  syntax error at or near "to_char"
LINE 10: COMMENT ON TABLE test.foo IS to_char(LOCALTIMESTAMP, 'YYYY-M...
                                  ^

********** Error **********

ERROR: syntax error at or near "to_char"
SQL state: 42601
Character: 276

如何将当前的“日期和时间”标记到表格的评论中?

最佳答案

您必须将语句作为动态 SQL 构建和执行。

DO
$do$
BEGIN
EXECUTE 'COMMENT ON TABLE b2 IS ''Table create date: '
     || to_char(LOCALTIMESTAMP, 'YYYY-MM-DD HH:MI:SS')
     || '''';
END
$do$

普通连接在这种情况下是安全的,对于不安全的输入,使用 format()因此。见:

换行符是可选的。与脚本的单行代码相同:

DO $do$BEGIN EXECUTE 'COMMENT ON TABLE b2 IS ''Table create date: ' || to_char(LOCALTIMESTAMP, 'YYYY-MM-DD HH:MI:SS') || ''''; END $do$;

关于postgresql - 在 COMMENT ON TABLE 中放置时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37486564/

相关文章:

javascript - 将数据库替换为 postgreSQL 后,Sequelize 时间比较失败

mysql判断一个字段的存储大小

php - 如何比较自定义格式的两个时间戳?

java - 如何验证 Java 中的时间格式是否符合预期

PostgreSQL 交叉表查询从辅助查询中提取列

tsql - 存储过程是否可以在 “IN”子句中​​使用动态参数?

postgresql - 当我不知道它的名字时改变默认序列

python - 从 postgreSQL 数据库(Django 站点)备份所有数据

c# - Stopwatch.Gettimestamp 是否会翻转?还是回滚?

sql - PostgreSQL 批量图像插入