在 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'
不能用于整数类型的列,只能用于时间戳和日期类型吗?
(此处为时间缩放器)
我们建议尽可能使用本机 timestamptz(带时区的时间戳)或时间戳格式,而不是整数。它具有微秒级的精度,并且更容易用于时区转换、使用时间戳的查询、now() 等。一次这是不可能的,因为纳秒级精度(需要 bigint),但这不适用于此处。
您在使用整数时间戳(而不是时间戳类型)时已经遇到问题。您将 chunk_time_interval
设置为间隔类型,但您的列是整数。问题是我们不知道你的整数是否代表纳秒、秒、小时等,所以你不能使用像“1 天”这样人类可读的东西。在这种情况下,如果您的时间列是毫秒,则需要指定 86400000。
但一般来说,建议尽可能使用 timestamptz 类型。
我正在尝试将从 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'
不能用于整数类型的列,只能用于时间戳和日期类型吗?
(此处为时间缩放器)
我们建议尽可能使用本机 timestamptz(带时区的时间戳)或时间戳格式,而不是整数。它具有微秒级的精度,并且更容易用于时区转换、使用时间戳的查询、now() 等。一次这是不可能的,因为纳秒级精度(需要 bigint),但这不适用于此处。
您在使用整数时间戳(而不是时间戳类型)时已经遇到问题。您将
chunk_time_interval
设置为间隔类型,但您的列是整数。问题是我们不知道你的整数是否代表纳秒、秒、小时等,所以你不能使用像“1 天”这样人类可读的东西。在这种情况下,如果您的时间列是毫秒,则需要指定 86400000。
但一般来说,建议尽可能使用 timestamptz 类型。