【问题标题】:How to store timestamp with milliseconds in PostgreSQL?如何在 PostgreSQL 中以毫秒为单位存储时间戳?
【发布时间】:2016-09-05 11:04:36
【问题描述】:

我需要在 PostgreSQL 数据库中以 yyyy-mm-dd hh:mm:ss.SSS(SSS 代表毫秒)格式存储时间戳。当然它可以作为文本/或varchar工作,但我需要使用时间戳“工作”(例如过滤某个时间戳之前的所有实例 - 考虑毫秒)。 我将如何在 PostgreSQL 中做到这一点?

【问题讨论】:

  • 那么为什么要使用其他数据库标签?
  • 不要将其存储为文本或varchar...
  • 在 postgreql 中使用 timestamp 数据类型。我一般使用timestamp with timezone。它也会为您提供时区
  • 如果您想在查询过程中获得yyyy-mm-dd hh:mm:ss.SSS,您可以对其进行格式化,并获得所需的格式。
  • 从未在varchar 列中存储时间戳(或日期或数字)。只是不要

标签: database postgresql time


【解决方案1】:

我知道这是一个老问题,但我遇到了类似的问题。

您可以使用 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;

注意:在当前版本的 postgres 中,时间戳存储为整数,因此不会导致浮点舍入问题

【讨论】:

  • 感谢您花时间回答,节省了我一些时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-19
  • 2023-03-11
  • 2018-08-31
  • 2011-08-02
  • 1970-01-01
  • 2021-08-20
  • 2015-06-17
相关资源
最近更新 更多