Postgresql

列出不同日期的數據庫視圖

  • March 3, 2016

我有許多機器的感測器列表,它們儲存在第二個基礎上(即,每台機器每天有 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 中的保留字,而且它使調試更加困難!

引用自:https://dba.stackexchange.com/questions/131203