Chapter 13. 函式 (八):QUERY › 13.3 日期與時間處理
13.3 日期與時間處理
在選取欄位時,可能會只想取得日期欄位的特定部分,也有可能只想選取特定日期或時間以後的資料,而本節將介紹與上述操作相關的語法,在官方文件中分成純量函式、文字表示兩部分,如下:
語法 | 說明 |
取得時間 特定部分 |
會輸出日期與時間的特定部分,可以放在選擇的欄位或條件中,例如 select hour(A)、select B where dayOfWeek(B) <> 2 特殊的輸出如下:
|
dateDiff | dateDiff(結束日, 起始日) 會輸出結束日與起始日之間差距的天數,可以用在 select 或是 where 中,例如 select dateDiff(A,B)、where dateDiff(A,B) > 3 |
條件中 包含時間 |
上述語法用於欲在條件中加入日期、時間、日期與期間時,此外必須在前面加入 date / timeofday / datetime,才能將其轉為日期或時間判讀,例如 where A >= date '2022-01-01'、where A >= timeofday '08:00:00'。 |
toDate | toDate(日期 / 日期時間 / 數字) 將資料轉成日期格式,輸入有以下形式
|
以下使用兩個範例說明上述語法的使用方式:
- 取得所有 1970/1/1 以後出生的會員的卡號、生日、性別
公式
- =QUERY(會員資料,"select A,B,C where year(B) >= 1970")
- =QUERY(會員資料,"select A,B,C where B >= date '1970-01-01'")
解說
可以使用 year(B) >= 1970 篩選 B 欄的年份大於等於 1970 的資料,或是直接使用 B >= date '1970-01-01' 篩選大於 1970/1/1 的會員。
- 輸出會員卡號 1777 最後一次消費的日期及距今天數
公式
=QUERY(交易記錄,"select max(D),dateDiff(now(),max(D)) where (B = '1777')")
解說
可以使用 max(D) 得到最後一筆消費的日期,並使用 dateDiff(now(),max(D)) 計算最後一筆消費日期與今天的差距。
了解 QUERY 中與日期相關的用法後,下一節將介紹與字串處理相關的用法!