在PostgreSQL上获取数据库创建日期

Za7*_*7pi 16 database postgresql

我想在POSTGRESQL中获取数据库创建日期.我的版本是在Ubuntu 14.04上运行的9.3.4.我可以使用select声明来执行此操作,还是可以通过访问服务器来执行此操作?

小智 35

我完全赞同Craig Ringer(出色的答案!)......但就我的目的而言,这已经足够了:

SELECT (pg_stat_file('base/'||oid ||'/PG_VERSION')).modification, datname FROM pg_database;
Run Code Online (Sandbox Code Playgroud)

简单干净(但超级用户).


Cra*_*ger 7

系统中没有PostgreSQL数据库创建时间的内置记录.依赖于文件系统创建/修改时间的所有方法都会产生错误的答案.

例如,如果您pg_basebackup是副本节点然后故障转移到它,则创建时间将显示为副本的创建时间.pg_basebackup不保留文件创建/修改时间,因为它们通常不被认为与数据库系统的操作相关.

获取数据库创建时间的唯一可靠方法是在创建数据库时创建一个包含创建时间的1行表,然后设置权限/添加触发器以拒绝更新.

如果你不介意错误答案的风险,其中创建时间被报告为比实际更新,你可以查看base/[dboid]/PG_VERSION文件的时间戳.@Bob 展示了一种有用的方法.