【发布时间】:2019-06-27 13:47:30
【问题描述】:
Postgres(V11.3,64 位,Windows)截断时间戳的尾随零。因此,如果我将时间戳“2019-06-12 12:37:07.880”插入表中,并在 postgres 返回文本“2019-06-12 12:37:07.88”时将其读回。
Table date_test:
CREATE TABLE public.date_test (
id SERIAL,
"timestamp" TIMESTAMP WITHOUT TIME ZONE NOT NULL,
CONSTRAINT pkey_date_test PRIMARY KEY(id)
)
插入数据时的SQL命令:
INSERT INTO date_test (timestamp) VALUES( '2019-06-12 12:37:07.880' )
获取数据的SQL命令:
SELECT dt.timestamp ::TEXT FROM date_test dt
returns '2019-06-12 12:37:07.88'
您认为这是错误还是功能?
我真正的问题是:我正在从 C++ 程序运行查询,我必须将从数据库返回的数据转换为适当的数据类型。由于协议是基于文本的,我从数据库中读取的所有内容都是纯文本。在解析时间戳时,我首先标记字符串,然后将每个标记转换为整数。而且由于毫秒部分被截断,最后一个标记是“88”而不是“880”,转换“88”会产生另一个将“880”转换为整数的值。
【问题讨论】:
标签: postgresql timestamp milliseconds truncated