日期與時間函數
QlikView 日期和時間函數用來轉換日期和時間值。所有函數皆可用於載入指令碼和圖表運算式。
這些函數基於日期時間序號,等於自 1899 年 12 月 30 日之後的天數。整數值代表日子,小數值代表一天中的時間。
QlikView 使用參數的數值,以便當數字的格式未設定為日期或時間時,作為參數也有效。如果參數未對應於數值,例如,因為它是字串,則 QlikView 會嘗試根據日期和時間環境變數來解譯字串。
如果參數中所用的時間格式未對應於環境變數中設定的時間格式,QlikView 將無法正確解譯。若要解決這個問題,請變更設定或使用解譯函數。
在每一個函數的範例中,假設預設時間與日期格式是 hh:mm:ss 和 YYYY-MM-DD (ISO 8601)。
資訊備註
使用日期或時間函數處理時間戳記時,QlikView 會忽略任何日光節約時間參數,除非日期或時間函數包含地理位置。
例如,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(timestamp [, first_week_day [, broken_weeks [, reference_day]]])
此函數會傳回一個雙值,其中月份名稱由環境變數 MonthNames 所定義,整數介於 1 與 12 之間。月份根據標準數字解譯的方式,從運算式的日期解譯計算而得。
month(expression)
此函數在 expression 的分數根據標準數字解譯的方式可解譯為日期時,會傳回代表年度的整數。
year(expression)
此函數會傳回根據 ISO 8601 週數所屬的年度。週數的範圍介於 1 和約 52 之間。
weekyear(expression)
此函數會傳回一個雙值,其中: 日期名稱由環境變數 DayNames 所定義, 整數介於 0 與 6 之間,相當於一周標稱的天 (0-6)。
weekday(date)
Timestamp 函數
此函數會傳回根據系統時鐘目前時間的時間戳記。預設值為 1。
now([
timer_mode])
此函數會傳回系統時鐘的目前日期。
today([timer_mode])
此函數會為指定時區傳回系統時鐘目前時間的時間戳記。
localtime([timezone [, ignoreDST ]])
Make 函數
此函數會傳回從年 YYYY、月 MM 及日 DD 計算而得的日期。
makedate(YYYY [ , MM [ , DD ] ])
此函數會傳回從年 YYYY、週 WW 及星期幾 D 計算而得的日期。
makeweekdate(YYYY [ , WW [ , D ] ])
此函數會傳回從小時 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(timestamp [ , yearoffset
[ , firstmonth [ , todaydate] ] ])
Timezone 函數
此函數會傳回目前時區的名稱 (如 Windows 所定義),不考慮日光節約時間調整。
timezone( )
此函數會傳回日期和目前的 Greenwich Mean Time (衍生自系統時鐘和 Windows 時間設定)。
GMT( )
傳回日期和目前 Coordinated Universal Time。
UTC( )
將 UTC 或 GMT 時間戳記轉換為當地時間作為雙值。地點可為全世界任何一個城市及時區。
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... 函數
如果 timestamp 落於包含 base_date 的年度內,此函數會傳回 True。
inyear(date, basedate , shift [, first_month_of_year
= 1])
如果 timestamp 落於包含 base_date 的年度部分內,且不超過 (可包含) base_date 的最後一毫秒,此函數會傳回 True。
inyeartodate
(date, basedate , shift [, first_month_of_year
= 1])
如果 timestamp 落於包含 base_date 的季度內,此函數會傳回 True。
inquarter
(date, basedate , shift [, first_month_of_year
= 1])
如果 timestamp 落於包含 base_date 的季度部分內,且不超過 (可包含) base_date 的最後一毫秒,此函數會傳回 True。
inquartertodate
(date, basedate , shift [, first_month_of_year
= 1])
如果 timestamp 落於包含 base_date 的月份內,此函數會傳回 True。
inmonth(date, basedate , shift)
如果 timestamp 落於包含 base_date 的月份部分內,且不超過 (可包含) base_date 的最後一毫秒,則會傳回 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])
如果 timestamp 落於包含 base_date 的週內,此函數會傳回 True。
inweek(date, basedate , shift [, weekstart])
如果 timestamp 落於包含 base_date 的週部分內,且不超過 (可包含) base_date 的最後一毫秒,此函數會傳回 True。
inweektodate
(date, basedate , shift [, weekstart])
如果 timestamp 落於包含 base_date 的農曆週內,此函數會傳回 True。QlikView 中的農曆週透過將 1 月 1 日算做一週的第一天進行定義。
inlunarweek
(date, basedate , shift [, weekstart])
如果 timestamp 落於農曆週的部分內,且不超過 (可包含) base_date 的最後一毫秒,此函數會傳回 True。QlikView 中的農曆週透過將 1 月 1 日算做一週的第一天進行定義。
inlunarweektodate
(date, basedate , shift [, weekstart])
如果 timestamp 落於包含 base_timestamp 的日內,此函數會傳回 True。
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])
此函數傳回的值相當於包含基本日期之月份、雙月、季度、四月期或半年的第一毫秒的時間戳記。也可以找出之前或之後一個時間期間的時間戳記。
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 之農曆週的第一毫秒的時間戳記。QlikView 中的農曆週透過將 1 月 1 日算做一週的第一天進行定義。
lunarweekstart(date [, shift = 0 [,weekoffset = 0]])
此函數傳回的值相當於包含 date 之農曆週的最後一毫秒的時間戳記。QlikView 中的農曆週透過將 1 月 1 日算做一週的第一天進行定義。
lunarweekend(date [, shift = 0 [,weekoffset = 0]])
此函數傳回的顯示年度和農曆週數的顯示值,相當於包含 date 之農曆週的第一天、第一毫秒的時間戳記。QlikView 中的農曆週透過將 1 月 1 日算做一週的第一天進行定義。
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])