在 TimescaleDB 中保存 Javascript Date.now() 毫秒时间戳

Save Javascript Date.now() millisecond timestamps in TimescaleDB

我正在尝试将从 Javascript 的 Date.now() 生成的具有毫秒精度的 unix 时间戳存储到名为 [=15= 的列下的 TimescaleDB table Data 中] 使用 int8 类型,或 DataTypes.BIGINT 使用 Javascript 库 Sequelize

问题 1: int8/BIGINT 是存储毫秒 unix 时间戳的推荐类型吗?

问题 2: 当我尝试使用以下方法创建 TimescaleDB hypertable 时:

SELECT create_hypertable('"Data"', 'timestamp', chunk_time_interval => interval '1 day');

我收到错误消息

ERROR: invalid interval: must be an integer type for integer dimensions , Time: 0.006000s

是因为interval '1 day'不能用于整数类型的列,只能用于时间戳和日期类型吗?

(此处为时间缩放器)

  1. 我们建议尽可能使用本机 timestamptz(带时区的时间戳)或时间戳格式,而不是整数。它具有微秒级的精度,并且更容易用于时区转换、使用时间戳的查询、now() 等。一次这是不可能的,因为纳秒级精度(需要 bigint),但这不适用于此处。

  2. 您在使用整数时间戳(而不是时间戳类型)时已经遇到问题。您将 chunk_time_interval 设置为间隔类型,但您的列是整数。问题是我们不知道你的整数是否代表纳秒、秒、小时等,所以你不能使用像“1 天”这样人类可读的东西。在这种情况下,如果您的时间列是毫秒,则需要指定 86400000。

但一般来说,建议尽可能使用 timestamptz 类型。