检查当前时间与存储的时间值之间的差是否大于固定值

时间:2018-09-22 17:17:36

标签: sql postgresql

设置:许多设备(arduino,无关紧要)连接到我的数据库以更新其当前状态:电压,温度等...和last_update列。

我要尝试做的是知道设备何时离线。意思是当current_time-last_update优于10秒(恒定值)时,我可以将“ device_state”更新为“ offline”

做到这一点的最佳方法是什么。我发现的最佳方法是创建一个作业,该作业每分钟左右选择一次last_update早于10秒的设备。有更好的方法吗?

这是一个具有Web前端的监视系统。我需要实时(或几乎实时)知道哪些设备处于脱机状态。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用视图实现此功能:

create view v_t as
    select t.*,
           ( last_update < now() - interval '10 second' ) as is_offline
    from t;

查询视图时,该列将自动更新。

许多数据库支持计算列。 Postgres还不是其中之一。

还有一种使用功能相似的函数的方法(有关详细信息,请参见here)。