日期與時間函數
Qlik Sense 日期和時間函數用於轉換日期和時間值。所有函數皆可用於資料載入指令碼和圖表運算式。
函數以相當於從 1899 年 12 月 30 日起算的天數的日期時間序號為基礎。整數值代表天,分數值代表當天的時間。
Qlik Sense 使用參數的數值,以便當數字的格式未設定為日期或時間時,作為參數也有效。如果參數未對應於數值,例如,因為它是字串,則 Qlik Sense 會嘗試根據日期和時間環境變數來解譯字串。
如果參數中所用的時間格式未對應於環境變數中設定的時間格式,Qlik Sense 將無法正確解譯。若要解決這個問題,可變更設定或使用解譯函數。
在每一個函數的範例中,假設預設時間與日期格式是 hh:mm:ss 和 YYYY-MM-DD (ISO 8601)。
使用日期或時間函數處理時間戳記時,Qlik Sense 會忽略任何日光節約時間參數,除非日期或時間函數包括地理位置。
例如,ConvertToLocalTime( filetime('Time.qvd'), 'Paris') 會使用日光節約時間參數,而 ConvertToLocalTime(filetime('Time.qvd'), 'GMT-01:00') 則不會使用日光節約時間參數。
使用每個函數中的下拉式功能表,以查看每個函數的簡要描述及語法。按一下語法描述中的函數名稱,以取得進一步詳細資料。
時間的整數運算式
當 expression 的分數根據標準數字解譯的方式可解譯為時間時,此函數會傳回代表秒的整數。
second(expression)
當 expression 的分數根據標準數字解譯的方式可解譯為時間時,此函數會傳回代表分鐘的整數。
minute(expression)
當 expression 的分數根據標準數字解譯的方式可解譯為時間時,此函數會傳回代表小時的整數。
hour(expression)
當 expression 的分數根據標準數字解譯的方式可解譯為日期時,此函數會傳回代表日的整數。
day(expression)
此函數會傳回根據 ISO 8601 代表週數的整數。週數是根據標準數字解譯,從運算式的日期解譯計算所得。
week(expression)
此函數會傳回雙值:一個如環境變數 MonthNames 中所定義的月份名稱,一個介於 1 與 12 之間的整數。月份是根據標準數字解譯,從運算式的日期解譯計算所得。
month(expression)
當 expression 根據標準數字解譯的方式可解譯為日期時,此函數會傳回代表年份的整數。
year(expression)
Timestamp 函數
此函數會傳回指定時區目前時間的時間戳記。
localtime([timezone [, ignoreDST ]])
Make 函數
此函數會傳回從年 YYYY、月 MM 及日 DD 計算而得的日期。
makedate(YYYY [ , MM [ , DD ] ])
此函數會傳回從小時 hh、分鐘 mm 及秒 ss 計算而得的時間。
maketime(hh [ , mm [ , ss [ .fff ] ] ])
Other date 函數
此函數會傳回 startdate 後 n 個月的日期,或者如果 n 是負數,則傳回 startdate 之前 n 個月的日期。
addmonths(startdate, n , [ , mode])
此函數會傳回 startdate 後 n 年的日期,或者如果 n 是負數,則傳回 startdate 之前 n 年的日期。
addyears(startdate, n)
此功能會尋找輸入時間戳記是否位於前次載入指令碼之日期的年份內,並傳回 True (如果在其內),False (如果不在其內)。
yeartodate(date [ , yearoffset [ , firstmonth [ , todaydate] ] ])
Timezone 函數
此函數傳回時區,如執行 Qlik 引擎的電腦上所定義。
timezone( )
此函數會傳回目前 Greenwich Mean Time,如衍生自區域設定。
GMT( )
傳回目前 Coordinated Universal Time。
UTC( )
傳回目前針對日光節約時間所作的調整 (如 Windows 所定義)。
將 UTC 或 GMT 時間戳記轉換為當地時間作為雙值。其中 place 可為全世界任何一個城市、地點及時區。
converttolocaltime(timestamp [, place [, ignore_dst=false]])
Set time 函數
此函數會輸入 timestamp 與 year ,並使用輸入中指定的 year 更新 timestamp 。
setdateyear (timestamp, year)
此函數會輸入 timestamp、month 與 year ,並使用輸入中指定的 year 和 month 更新 timestamp 。
setdateyearmonth (timestamp, year, month)
In... 函數
此函數會傳回 True,前提是如果 timestamp 位於包含 base_date 的年中。
inyear(date, basedate , shift [, first_month_of_year = 1])
如果 timestamp 位於包含 base_date 的年部分內,且不超過 (可包含) base_date 的最後一毫秒,則此函數會傳回 True。
inyeartodate (date, basedate , shift [, first_month_of_year = 1])
此函數會傳回 True,前提是如果 timestamp 位於包含 base_date 的季度中。
inquarter (date, basedate , shift [, first_month_of_year = 1])
如果 timestamp 位於包含 base_date 的季度部分內,且不超過 (可包含) base_date 的最後一毫秒,則此函數會傳回 True。
inquartertodate (date, basedate , shift [, first_month_of_year = 1])
此函數會傳回 True,前提是如果 timestamp 位於包含 base_date 的月份中。
inmonth(date, basedate , shift)
如果 date 位於包含 basedate 的月份部分內,且不超過 (可包含) basedate 的最後一毫秒,則傳回 True。
inmonthtodate (date, basedate , shift)
此函數會發現時間戳記是否落在與基礎日期相同的月、雙月、季度、四月期或半年的期間內。還可以發現時間戳記是否在前一個或後一個時間期間內。
inmonths(n, date, basedate , shift [, first_month_of_year = 1])
此函數會發現時間戳記是否在月、雙月、季度、四月期或半年的期間內,且不超過 (可包含) base_date 的最後一毫秒。還可以發現時間戳記是否在前一個或後一個時間期間內。
inmonthstodate (n, date, basedate , shift [, first_month_of_year = 1])
此函數會傳回 True,前提是如果 timestamp 位於包含 base_date 的週中。
inweek(date, basedate , shift [, weekstart])
如果 timestamp 位於包含 base_date 的週部分內,且不超過 (可包含) base_date 的最後一毫秒,則此函數會傳回 True。
inweektodate (date, basedate , shift [, weekstart])
此函數會判定 timestamp 是否位於包含 base_date 的農曆週內。將 1 月 1 日視為該週的第一天,以定義 Qlik Sense 中的農曆週。除了該年的最後一週,每週都會確切包含七天。
inlunarweek (date, basedate , shift [, weekstart])
此函數會發現 timestamp 是否位於農曆週部分內,且不超過 (可包含) base_date 的最後一毫秒。將 1 月 1 日視為該週的第一天,以定義 Qlik Sense 中的農曆週,而除了該年的最後一週,會確切包含七天。
inlunarweektodate (date, basedate , shift [, weekstart])
此函數會傳回 True,前提是如果 timestamp 位於包含 base_timestamp 的日中。
inday(timestamp, basetimestamp , shift [, daystart])
如果 timestamp 位於包含 base_timestamp 的日部分內,且不超過 (可包含) base_timestamp 的確切的毫秒,則此函數會傳回 True。
indaytotime(timestamp, basetimestamp , shift [, daystart])
Start ... end 函數
此函數傳回的時間戳記相當於包含 date 的年份的第一天開始。預設的輸出格式為指令碼中所設定的 DateFormat。
yearstart( date [, shift = 0 [, first_month_of_year = 1]])
此函數傳回的值相當於包含 date 的年份最後一天、最後一毫秒的時間戳記。預設的輸出格式為指令碼中所設定的 DateFormat。
yearend( date [, shift = 0 [, first_month_of_year = 1]])
此函數傳回四位數的年度為顯示值,其基礎數值相當於包含 date 的年度的第一天、第一毫秒的時間戳記。
yearname(date [, shift = 0 [, first_month_of_year = 1]] )
此函數傳回的值相當於包含 date 的季度的第一毫秒的時間戳記。預設的輸出格式為指令碼中所設定的 DateFormat。
quarterstart(date [, shift = 0 [, first_month_of_year = 1]])
此函數傳回的值相當於包含 date 的季度的最後一毫秒的時間戳記。預設的輸出格式為指令碼中所設定的 DateFormat。
quarterend(date [, shift = 0 [, first_month_of_year = 1]])
此函數會傳回顯示當季度月份 (根據 MonthNames 指令碼變數進行格式設定) 和年度的顯示值,其基礎數值相當於該季度第一天、第一毫秒的時間戳記。
quartername(date [, shift = 0 [, first_month_of_year = 1]])
此函數傳回的值相當於包含 date 的月份第一天、第一毫秒的時間戳記。預設的輸出格式為指令碼中所設定的 DateFormat。
monthstart(date [, shift = 0])
此函數傳回的值相當於包含 date 的月份最後一天、最後一毫秒的時間戳記。預設的輸出格式為指令碼中所設定的 DateFormat。
monthend(date [, shift = 0])
此函數會傳回顯示月份 (根據 MonthNames 指令碼變數進行格式設定) 和年度的顯示值,其基礎數值相當於該月份第一天、第一毫秒的時間戳記。
monthname(date [, shift = 0])
此函數傳回的值相當於包含基本日期的月、雙月、季度、四月期或半年的第一毫秒的時間戳記。還可以尋找前一個或後一個時間期間的時間戳記。預設的輸出格式為指令碼中所設定的 DateFormat。
monthsstart(n, date [, shift = 0 [, first_month_of_year = 1]])
此函數傳回的值相當於包含基本日期的月、雙月、季度、四月期或半年的最後一毫秒的時間戳記。還可以尋找前一個或後一個時間期間的時間戳記。
monthsend(n, date [, shift = 0 [, first_month_of_year = 1]])
此函數會傳回一個顯示值,代表期間月份 (根據 MonthNames 指令碼變數進行格式設定) 和年度。基礎數值相當於包含基本日期的月、雙月、季度、四月期或半年的第一毫秒的時間戳記。
monthsname(n, date [, shift = 0 [, first_month_of_year = 1]])
此功能傳回的值相當於包含 date的行事曆週第一天、第一毫秒的時間戳記。預設的輸出格式為指令碼中所設定的 DateFormat。
weekstart(date [, shift = 0 [,weekoffset = 0]])
此功能傳回的值相當於包含 date 的該行事曆週最後一天的最後一毫秒的時間戳記。預設的輸出格式為指令碼中所設定的 DateFormat。
weekend(date [, shift = 0 [,weekoffset = 0]])
此函數會傳回顯示年度和週數的值,其基礎數值相當於包含 date 之週的第一天、第一毫秒的時間戳記。
weekname(date [, shift = 0 [,weekoffset = 0]])
此函數傳回的值相當於包含 date 的該農曆週第一天的第一毫秒的時間戳記。將 1 月 1 日視為該週的第一天,以定義 Qlik Sense 中的農曆週,而除了該年的最後一週,會確切包含七天。
lunarweekstart(date [, shift = 0 [,weekoffset = 0]])
此函數傳回的值相當於包含 date 的該農曆週最後一天的最後一毫秒的時間戳記。將 1 月 1 日視為該週的第一天,以定義 Qlik Sense 中的農曆週,而除了該年的最後一週,會確切包含七天。
lunarweekend(date [, shift = 0 [,weekoffset = 0]])
此函數會傳回一個顯示值,顯示相當於包含 date 之農曆週第一天的第一毫秒的時間戳記的年和農曆週數。將 1 月 1 日視為該週的第一天,以定義 Qlik Sense 中的農曆週,而除了該年的最後一週,會確切包含七天。
lunarweekname(date [, shift = 0 [,weekoffset = 0]])
此函數傳回的值相當於包含在 time 引數中該日的第一毫秒的時間戳記。預設的輸出格式為指令碼中所設定的 TimestampFormat。
daystart(timestamp [, shift = 0 [, dayoffset = 0]])
此函數傳回的值相當於包含在 time 中該日的最後一毫秒的時間戳記。預設的輸出格式為指令碼中所設定的 TimestampFormat。
dayend(timestamp [, shift = 0 [, dayoffset = 0]])
此函數會傳回顯示日期的值,其基礎數值相當於包含 time 之日的第一毫秒的時間戳記。
dayname(timestamp [, shift = 0 [, dayoffset = 0]])
Day numbering 函數
age 函數傳回生日為 date_of_birth 的某人於 timestamp 時的年齡 (以實歲計)。
age(timestamp, date_of_birth)
networkdays 函數會傳回介於 start_date 和 end_date 之間 (可包含) 的工作日數 (星期一至星期五),並考慮到所有選用的列出 holiday。
networkdays (start:date, end_date {, holiday})
firstworkdate 函數會傳回在不晚於 end_date 前結束,並考慮到所有選用的列出假日,而可達到 no_of_workdays (星期一至星期五) 的最近開始日期。end_date 和 holiday 應該是有效的日期或時間戳記。
firstworkdate(end_date, no_of_workdays {, holiday} )
lastworkdate 函數會傳回開始於 start_date,並考慮到所有選用的列出 holiday,而可達到 no_of_workdays (星期一至星期五) 的最早結束日期。start_date 和 holiday 應該是有效的日期或時間戳記。
lastworkdate(start_date, no_of_workdays {, holiday})
此函數會計算時間戳記在當年的第幾天。該計算從當年第一天的第一毫秒開始進行,但是第一個月可能發生位移。
daynumberofyear(date[,firstmonth])
此函數會計算時間戳記在當季度的第幾天。在建立主要行事曆時使用此函數。
daynumberofquarter(date[,firstmonth])