从 node.js 写入时,QuestDB 中的时间戳显示为 1970
Timestamps showing as 1970 in QuestDB when writing from node.js
我有一个 table 看起来像:
timestamp
sensor
reading
ts1
sensor name
123
我正在写入数据的脚本的主要部分如下所示:
const run = async () => {
try {
const client = new Client({
database: "qdb",
...
})
await client.connect()
// read sensors
...
const insertData = await client.query(
"INSERT INTO measurements VALUES(, , );",
[Date.now(), sensor_id, sensor_reading],
)
await client.query("COMMIT")
await client.end()
} catch (e) {
console.log(e)
}
}
run()
传感器 ID 和测量值看起来不错,但时间戳都是 1970 年,日期插入有什么问题?
QuestDB 本身具有微秒分辨率时间戳。 Date.now()
创建毫秒分辨率的时间戳。
如果不介意精度损失,直接乘以1000即可:
const insertData = await client.query(
"INSERT INTO measurements VALUES(, , );",
[Date.now() * 1000, sensor_id, sensor_reading],
)
如果你有高吞吐量或者对精度有要求,可以使用microtime包:
我有一个 table 看起来像:
timestamp | sensor | reading |
---|---|---|
ts1 | sensor name | 123 |
我正在写入数据的脚本的主要部分如下所示:
const run = async () => {
try {
const client = new Client({
database: "qdb",
...
})
await client.connect()
// read sensors
...
const insertData = await client.query(
"INSERT INTO measurements VALUES(, , );",
[Date.now(), sensor_id, sensor_reading],
)
await client.query("COMMIT")
await client.end()
} catch (e) {
console.log(e)
}
}
run()
传感器 ID 和测量值看起来不错,但时间戳都是 1970 年,日期插入有什么问题?
QuestDB 本身具有微秒分辨率时间戳。 Date.now()
创建毫秒分辨率的时间戳。
如果不介意精度损失,直接乘以1000即可:
const insertData = await client.query(
"INSERT INTO measurements VALUES(, , );",
[Date.now() * 1000, sensor_id, sensor_reading],
)
如果你有高吞吐量或者对精度有要求,可以使用microtime包: