addyears - 指令碼與圖表函數
此函數會傳回 startdate 後 n 年的日期,或者如果 n 是負數,則傳回 startdate 之前 n 年的日期。
語法:
AddYears(startdate, n)
傳回的資料類型: 雙值
addyears() 函數對 startdate 加上或減去定義的年數 n。然後這會傳回產生的日期。
引數 | 描述 |
---|---|
startdate |
以時間戳記表示的開始日期,例如 '2012-10-12'。 |
n | 以正整數或負整數表示的年份數。 |
範例 | 結果 |
---|---|
addyears ('01/29/2010',3) | 傳回「01/29/2013」。 |
addyears ('01/29/2010',-1) | 傳回「01/29/2009」。 |
區域設定
除非另有說明,否則此主題中的範例皆使用下列日期格式:MM/DD/YYYY。日期格式是在資料載入指令碼的 SET DateFormat 陳述式中指定。由於地區設定和其他因素,您系統中的預設日期格式可能會不同。您可以變更以下範例中的格式,以滿足您的需求。或者,您可以在載入指令碼中變更格式,以符合這些範例。如需詳細資訊,請參閱 修改用於應用程式和指令碼的區域設定。
應用程式中的預設地區設定是根據使用者設定檔。這些地區格式設定與 Qlik Cloud 使用者介面中顯示的語言無關。Qlik Cloud 顯示的語言將與您正在使用的瀏覽器相同。
若您是應用程式建立者,可以為您建立的應用程式設定預設地區。如需詳細資訊,請參閱Qlik Cloud 分析 中設定用於建立應用程式和指令碼的偏好區域設定。
範例 1 - 簡單範例
概覽
開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。
載入指令碼包含:
-
包含一組 2020 年和 2022 年之間交易的資料集,這載入到稱為「Transactions」的表格中。
-
以 DateFormat 系統變數 (MM/DD/YYYY) 格式提供的日期欄位。
-
建立欄位 two_years_later,這傳回交易發生後兩年的日期。
載入指令碼
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
addyears(date,2) as two_years_later
;
Load
*
Inline
[
id,date,amount
8188,'01/10/2020',37.23
8189,'02/28/2020',17.17
8190,'04/09/2020',88.27
8191,'04/16/2020',57.42
8192,'05/21/2020',53.80
8193,'08/14/2020',82.06
8194,'10/07/2020',40.39
8195,'12/05/2020',87.21
8196,'01/22/2021',95.93
8197,'02/03/2021',45.89
8198,'03/17/2021',36.23
8199,'04/23/2021',25.66
8200,'05/04/2021',82.77
8201,'06/30/2021',69.98
8202,'07/26/2021',76.11
8203,'12/27/2021',25.12
8204,'02/02/2022',46.23
8205,'02/26/2022',84.21
8206,'03/07/2022',96.24
8207,'03/11/2022',67.67
];
結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
-
date
-
two_years_later
日期 | two_years_later |
---|---|
01/10/2020 | 01/10/2022 |
02/28/2020 | 02/28/2022 |
04/09/2020 | 04/09/2022 |
04/16/2020 | 04/16/2022 |
05/21/2020 | 05/21/2022 |
08/14/2020 | 08/14/2022 |
10/07/2020 | 10/07/2022 |
12/05/2020 | 12/05/2022 |
01/22/2021 | 01/22/2023 |
02/03/2021 | 02/03/2023 |
03/17/2021 | 03/17/2023 |
04/23/2021 | 04/23/2023 |
05/04/2021 | 05/04/2023 |
06/30/2021 | 06/30/2023 |
07/26/2021 | 07/26/2023 |
12/27/2021 | 12/27/2023 |
02/02/2022 | 02/02/2024 |
02/26/2022 | 02/26/2024 |
03/07/2022 | 03/07/2024 |
03/11/2022 | 03/11/2024 |
「two_years_later」欄位使用 addyears() 函數在前置 LOAD 陳述式中建立。提供的第一個引數識別正在評估哪個日期。第二個引數是要從開始日期加上或減去的年數。在此例中,提供的值為 2。
交易 8193 發生於 2020 年 8 月 14 日。因此, addyears() 函數會為 two_years_later 欄位傳回 2022 年 8 月 14 日。
範例 2 – 圖表物件範例
概覽
開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。
載入指令碼包含:
-
包含一組 2020 年和 2022 年之間交易的資料集,這載入到稱為 Transactions 的表格中。
-
以 DateFormat 系統變數 (MM/DD/YYYY) 格式提供的日期欄位。
在圖表物件中,建立量值 prior_year_date,這傳回交易發生前一年的日期。
載入指令碼
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8188,'01/10/2020',37.23
8189,'02/28/2020',17.17
8190,'04/09/2020',88.27
8191,'04/16/2020',57.42
8192,'05/21/2020',53.80
8193,'08/14/2020',82.06
8194,'10/07/2020',40.39
8195,'12/05/2020',87.21
8196,'01/22/2021',95.93
8197,'02/03/2021',45.89
8198,'03/17/2021',36.23
8199,'04/23/2021',25.66
8200,'05/04/2021',82.77
8201,'06/30/2021',69.98
8202,'07/26/2021',76.11
8203,'12/27/2021',25.12
8204,'02/02/2022',46.23
8205,'02/26/2022',84.21
8206,'03/07/2022',96.24
8207,'03/11/2022',67.67
];
結果
載入資料並開啟工作表。建立新的表格並將此欄位新增為維度: date。
建立下列量值以計算每個交易前一年的日期:
=addyears(date,-1)
日期 | =addyears(date,-1) |
---|---|
01/10/2020 | 01/10/2019 |
02/28/2020 | 02/28/2019 |
04/09/2020 | 04/09/2019 |
04/16/2020 | 04/16/2019 |
05/21/2020 | 05/21/2019 |
08/14/2020 | 08/14/2019 |
10/07/2020 | 10/07/2019 |
12/05/2020 | 12/05/2019 |
01/22/2021 | 01/22/2020 |
02/03/2021 | 02/03/2020 |
03/17/2021 | 03/17/2020 |
04/23/2021 | 04/23/2020 |
05/04/2021 | 05/04/2020 |
06/30/2021 | 06/30/2020 |
07/26/2021 | 07/26/2020 |
12/27/2021 | 12/27/2020 |
02/02/2022 | 02/02/2021 |
02/26/2022 | 02/26/2021 |
03/07/2022 | 03/07/2021 |
03/11/2022 | 03/11/2021 |
會使用 addyears() 函數在圖表物件中建立 one_year_prior 量值。提供的第一個引數識別正在評估哪個日期。第二個引數是要從 startdate 加上或減去的年數。在此例中,提供的值為 -1。
交易 8193 發生於 8 月 14 日。因此, addyears() 函數會為 one_year_prior 欄位傳回 2019 年 8 月 14 日。
範例 3 – 情境
概覽
開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。
載入指令碼包含:
-
載入到稱為 Warranties 之表格的資料集。
-
含有產品 ID、購買日期、保固長度和購買價格的資訊。
最終使用者希望圖表物件依產品 ID 顯示每個產品的保固終止日期。
載入指令碼
Warranties:
Load
*
Inline
[
product_id,purchase_date,warranty_length,purchase_price
8188,'01/13/2020',4,32000
8189,'02/26/2020',2,28000
8190,'03/27/2020',3,41000
8191,'04/16/2020',4,17000
8192,'05/21/2020',2,25000
8193,'08/14/2020',1,59000
8194,'10/07/2020',2,12000
8195,'12/05/2020',3,12000
8196,'01/22/2021',4,24000
8197,'02/03/2021',1,50000
8198,'03/17/2021',2,80000
8199,'04/23/2021',3,10000
8200,'05/04/2021',4,30000
8201,'06/30/2021',3,30000
8202,'07/26/2021',4,20000
8203,'12/27/2021',4,10000
8204,'06/06/2022',2,25000
8205,'07/18/2022',1,32000
8206,'11/14/2022',1,30000
8207,'12/12/2022',4,22000
];
結果
載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度:
-
product_id
-
purchase_date
-
warranty_length
建立下列量值以計算每個產品保固的結束日期:
=addyears(purchase_date,warranty_length)
product_id | purchase_date | warranty_length | =addyears(purchase_date,warranty_length) |
---|---|---|---|
8188 | 01/13/2020 | 4 | 01/13/2024 |
8189 | 02/26/2020 | 2 | 02/26/2022 |
8190 | 03/27/2020 | 3 | 03/27/2023 |
8191 | 04/16/2020 | 4 | 04/16/2024 |
8192 | 05/21/2020 | 2 | 05/21/2022 |
8193 | 08/14/2020 | 1 | 08/14/2021 |
8194 | 10/07/2020 | 2 | 10/07/2022 |
8195 | 12/05/2020 | 3 | 12/05/2023 |
8196 | 01/22/2021 | 4 | 01/22/2025 |
8197 | 02/03/2021 | 1 | 02/03/2022 |
8198 | 03/17/2021 | 2 | 03/17/2023 |
8199 | 04/23/2021 | 3 | 04/23/2024 |
8200 | 05/04/2021 | 4 | 05/04/2025 |
8201 | 06/30/2021 | 3 | 06/30/2024 |
8202 | 07/26/2021 | 4 | 07/26/2025 |
8203 | 12/27/2021 | 4 | 12/27/2025 |
8204 | 06/06/2022 | 2 | 06/06/2024 |
8205 | 07/18/2022 | 1 | 07/18/2023 |
8206 | 11/14/2022 | 1 | 11/14/2023 |
8207 | 12/12/2022 | 4 | 12/12/2026 |