Postgresql
列出不同日期的數據庫視圖
我有許多機器的感測器列表,它們儲存在第二個基礎上(即,每台機器每天有 86400 條記錄)。許多列之一是值的日期時間(也可以單獨儲存為日期和時間)。我正在使用 PostgreSQL 9.5。
通常,我需要找出每台機器的感測器記錄可用的日期。
我曾考慮為每台機器創建一個包含不同日期的數據庫視圖,但是在搜尋“物化視圖”之後,我認為我可以每天不時地更新這個列表,因為每天都會儲存數據。
有人會就這樣做提供任何建議嗎?
該表類似於
ID | Machine_code | Sensor_1 | Sensor_2 | Sensor3 | Datetime 1 | Drimmer | 12 | 15.8 | 13.4 | 2016-03-03 10:00:03 GMT+1
如果它有幫助,我在它前面使用 Django 框架。
create materialized view foo as select distinct machine_code, date(datetime) from thing; create unique index on foo(machine_code,date);
請注意,日期時間到日期的轉換將發生在最後創建或刷新 MV 的人的時區中。您可能想改用它:
create materialized view foo as select distinct machine_code, date(datetime at time zone 'GMT+1') from thing;
但這可能無法滿足您對夏令時的要求。
我以為你想要這樣的東西
Create table dummy ( Mymachine int, Myval int, Mysense date ); Insert into dummy Values (1, 2, '2016-02-25'); Insert into dummy values (1, 3, '2016-02-26'); Insert into dummy Values (2, 4, '2016-02-24'); Insert into dummy Values (2, 5, '2016-02-25'); Insert into dummy Values (2, 6, '2016-02-27'); Insert into dummy Values (2, 2, '2016-02-25');
然後在查詢中指定給定範圍,因此:
SELECT DISTINCT Mymachine, DATE(Mysense) FROM dummy Where date(Mysense) in ( SELECT (generate_series('2016-02-15', '2016-03-10', '1 day'::interval))::DATE );
ps 不呼叫欄位
datetime
- 它是 SQL 中的保留字,而且它使調試更加困難!