sql - 检查当前时间和存储的时间值之间的差异是否大于固定值
问题描述
设置:许多设备(arduino,没关系)连接到我的数据库以更新它们的当前状态:电压、温度等......和 last_update 列。
我想做的是知道设备何时离线。这意味着当 current_time-last_update 优于假设 10 秒(恒定值)时,我可以将“device_state”更新为“offline”
什么是最好的最佳方式来做到这一点。我发现的最佳方法是创建一个作业,每分钟左右选择 last_update 超过 10 秒的所有设备。有没有更好的办法?
这是一个带有 Web 前端的监控系统。我需要实时(或几乎实时)知道哪些设备处于离线状态。
谢谢
解决方案
您可以使用视图实现此功能:
create view v_t as
select t.*,
( last_update < now() - interval '10 second' ) as is_offline
from t;
当您查询视图时,该列将自动更新。
许多数据库支持计算列。Postgres 还不是其中之一。
还有一种使用函数的方法可以做一些非常相似的事情(详见此处)。
推荐阅读
- android - 试图检索用户数据
- javascript - Node.js : 在后台运行函数
- android - 使用 glide 从 firebase 存储(cloud firestore)、FirebaseUi 中恢复图像
- java - 通过 jenkinsFile 中的 maven 命令指定 logback 配置文件
- python - 在 Python 中只打印一行
- html - 红宝石表不匹配
- java - JDBC 模板随机返回空结果集
- arrays - 使用 DRF 将图像数组作为 JSON 响应发送
- javascript - Javascript:如何在 javascript 中实现多线程?
- javascript - 如何使用 JSDoc 来记录我的结构?