我需要在PostgreSQL数据库中以yyyy-mm-dd hh:mm:ss.SSS
(其中SSS代表毫秒)的格式存储时间戳。虽然将其作为文本或varchar可能有效,但我需要与时间戳一起“工作”(例如,过滤早于某个时间戳的所有实例-考虑毫秒)。
如何在PostgreSQL中实现这一点?
我需要在PostgreSQL数据库中以yyyy-mm-dd hh:mm:ss.SSS
(其中SSS代表毫秒)的格式存储时间戳。虽然将其作为文本或varchar可能有效,但我需要与时间戳一起“工作”(例如,过滤早于某个时间戳的所有实例-考虑毫秒)。
如何在PostgreSQL中实现这一点?
我知道这是一个老问题,但我遇到了类似的问题。
您可以使用timestamp(n)字段,其中n表示要存储在日期上的精度位数(timestamp(3)将为您提供毫秒级精度)
示例
CREATE TABLE date_test (datetime timestamp(3) with time zone);
insert into date_test values(to_timestamp(1525745241.879));
select EXTRACT(epoch FROM datetime) from date_test;
注意: 在当前版本的PostgreSQL中,时间戳被存储为整数,因此不会出现浮点舍入问题。
timestamp
数据类型。我通常使用带有时区的timestamp with timezone
,这将同时提供时区信息。 - Santhucoolyyyy-mm-dd hh:mm:ss.SSS
格式的时间,您可以对其进行格式化以获得所需的格式。 - Santhucoolvarchar
列中。千万不要这样做。 - user330315timestamp
的特性。 - Santhucool