1. 概述
1.1 問題描述
當資料庫中某張表有時間欄位,且幾乎每分每秒都會有一筆資料生成,為減少報表顯示資料量,可以透過時間間隔來篩選資料,僅顯示部分資料。
例如:在「開始時間」和「結束時間」元件內裏面輸入時間查詢起始
1.2 實現思路
透過帆軟內建函式運算,傳回符合條件的內容擴展顯示。
公式參考:=MAPARRAY(range(DATETONUMBER($strattime) / 1000, DATETONUMBER($endtime) / 1000, $jg), format(TODATE(item * 1000), "yyyy-MM-dd HH:mm:ss"))
2. 範例
2.1 建立報表
建立「開始時間」和「結束時間」元件,元件名分別是「strattime」「endtime」,傳回值型別為時間型(yyyy-MM-dd HH:mm:ss),時間間隔元件名 jg
如圖所示:
2.2 儲存格公式設定
在 A1 儲存格輸入公式:=MAPARRAY(range(DATETONUMBER($strattime) / 1000, DATETONUMBER($endtime) / 1000, $jg), format(TODATE(item * 1000), "yyyy-MM-dd HH:mm:ss"))設定擴展方向為縱向,如圖所示:
公式說明:
先將「開始時間
函式 | 解譯 | 範例 |
---|---|---|
DATETONUMBER(date) | 傳回自1970年1月1日00:00:00GMT經過的毫秒數 | DATETONUMBER("2008-08-08")等於1218124800000 |
RANGE(from,to,step) | 函式表示從整數from開始,以step為每一步的大小,直到整數to的一個數字序列。 | RANGE(0,5,1)傳回[0,1,2,3,4,5] |
MAPARRAY(array,fn) | 把一個陣列中的項目轉換到另一個陣列中 | MAPARRAY([3,4,2,3,6,8,7],item!=3)等於[false,true,true,false,true,true,true] |
2.3 效果預覽
儲存設定,分頁預覽。
2.3.1 PC 端
詳情參見本文 1.1 節。
2.3.2 行動端
如下圖所示: