如何在PostgreSQL中将timestamp(0)设置为默认值而不是timestamp(6)?

时间:2016-08-11 16:01:46

标签: postgresql datetime configuration timestamp

我正在使用存储时间序列数据的PostgreSQL数据库。 使用“带时区的时间戳”类型存储数据,输出为ISO格式(默认为postgresql)。数据源是一个闭源软件,可以创建具有“带时区的时间戳”数据类型的表。

根据Postgres文档,时间戳的精度达到6位数(微秒)。所以,我的时间序列每秒记录一次,我在输出中看到毫秒。

e.g. 2012-06-25 15:46:23.001

绘制时间序列数据的软件在几毫秒内变得疯狂,但我无法在创建表时修改数据源软件以使用时间戳(0)。

我的一位同事编写了一个函数,该函数查询整个数据库,以便在每个表中将时间戳数据类型更改为“带时区的时间戳(0)”。它运行良好,但它是一个手动操作,必须在每个新表创建后完成。我们希望避免使用该功能。

是否可以通过编辑postgresql.conf来告诉postgresql创建时间戳(0)时间戳数据类型而不是默认时间戳(6)?

1 个答案:

答案 0 :(得分:2)

此处理非常难以编码,用户无法轻易更改。 (如果您感兴趣,请参阅源代码中的AdjustTimestampForTypmod()。)

您可以在表格上创建一个视图,将时间戳列强制转换为timestamp(0),或者使用to_char对其进行格式化,并将渲染软件指向该视图。