【问题标题】:Save Javascript Date.now() millisecond timestamps in TimescaleDB在 TimescaleDB 中保存 Javascript Date.now() 毫秒时间戳
【发布时间】:2019-12-26 02:25:16
【问题描述】:

我正在尝试将 Javascript 的 Date.now() 生成的毫秒精度的 unix 时间戳存储到名为 timestamp 的列下的 TimescaleDB 表 Data 中,类型为 int8,或使用 Javascript 库 DataTypes.BIGINT 时使用 Javascript 库 @987654326 @。

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

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

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

我收到错误消息

错误:无效间隔:整数维度必须是整数类型 , 时间:0.006000s

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

【问题讨论】:

    标签: javascript sequelize.js timescaledb


    【解决方案1】:

    (此处为时间刻度)

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

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

    但总的来说,如果可能的话,建议使用 timestamptz 类型。

    【讨论】:

      猜你喜欢
      • 2016-08-13
      • 2013-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-22
      相关资源
      最近更新 更多