如何计算 QuestDB 中布尔记录发生的时间?
How can I calculate how long ago a boolean record occurred in QuestDB?
我有一个 table iot
有一些传感器数据,其中一列是布尔值作为某些事件发生的指标,我如何计算最近的 true
值发生在使用 SQL?
的列中
示例数据集如下所示:
ts
sensor
2021-04-07T17:12:36.314688Z
true
2021-04-07T17:12:43.995006Z
false
2021-04-07T17:12:47.447316Z
false
2021-04-07T17:12:53.276256Z
true
2021-04-07T17:12:58.723072Z
false
如果您想在 SQL 中执行此操作,可以使用 datediff()
来计算您的时间戳与现在之间的时间差。
此查询 return 两列:
- 记录的时间戳
- 从时间戳到现在的持续时间(以秒为单位)
select datediff('s', now(), iot.ts) diff, ts
from iot
示例响应:
diff
ts
56241
2021-04-07T17:12:36.314688Z
56233
2021-04-07T17:12:43.995006Z
56230
2021-04-07T17:12:47.447316Z
56224
2021-04-07T17:12:53.276256Z
56219
2021-04-07T17:12:58.723072Z
如果你想获得一个值的最新读数,你可以使用:
select datediff('s', now(), iot.ts) diff, ts
from iot
latest by sensor where sensor
这将首先对 return 行执行 where
过滤,其中 sensor=true
然后对剩余的行执行 return 最新记录:
diff
ts
56224
2021-04-07T17:12:53.276256Z
datediff的单位可以是秒、分、时、日、月或年。有关详细信息,请参阅 documentation for datediff
我有一个 table iot
有一些传感器数据,其中一列是布尔值作为某些事件发生的指标,我如何计算最近的 true
值发生在使用 SQL?
示例数据集如下所示:
ts | sensor |
---|---|
2021-04-07T17:12:36.314688Z | true |
2021-04-07T17:12:43.995006Z | false |
2021-04-07T17:12:47.447316Z | false |
2021-04-07T17:12:53.276256Z | true |
2021-04-07T17:12:58.723072Z | false |
如果您想在 SQL 中执行此操作,可以使用 datediff()
来计算您的时间戳与现在之间的时间差。
此查询 return 两列:
- 记录的时间戳
- 从时间戳到现在的持续时间(以秒为单位)
select datediff('s', now(), iot.ts) diff, ts
from iot
示例响应:
diff | ts |
---|---|
56241 | 2021-04-07T17:12:36.314688Z |
56233 | 2021-04-07T17:12:43.995006Z |
56230 | 2021-04-07T17:12:47.447316Z |
56224 | 2021-04-07T17:12:53.276256Z |
56219 | 2021-04-07T17:12:58.723072Z |
如果你想获得一个值的最新读数,你可以使用:
select datediff('s', now(), iot.ts) diff, ts
from iot
latest by sensor where sensor
这将首先对 return 行执行 where
过滤,其中 sensor=true
然后对剩余的行执行 return 最新记录:
diff | ts |
---|---|
56224 | 2021-04-07T17:12:53.276256Z |
datediff的单位可以是秒、分、时、日、月或年。有关详细信息,请参阅 documentation for datediff