日期和時間函數

CLEM 包括一系列函數,用於處理具有代表日期和時間之字串變數的日期時間儲存的欄位。

使用的日期和時間格式是每個流程特有的,並在流程內容中指定。 日期與時間函數根據目前選定的格式來剖析日期與時間字串。

當您在僅使用兩位數的日期中指定年份 (即未指定世紀) 時, SPSS Modeler 會使用流程內容中指定的預設世紀。

表 1. CLEM 日期和時間函數
函數 結果 說明
@TODAY 字串 如果您在流程內容中選取 輪替天數/分鐘數 ,則此函數會以現行日期格式的字串形式傳回現行日期。 如果您使用兩位數日期格式,且未選取 輪替天數/分鐘數,則此函數會在現行伺服器上傳回 $null$
to_time(ITEM) 時間 將指定欄位的儲存轉換為時間。
to_date(ITEM) 日期 將指定欄位的儲存轉換為日期。
to_timestamp(ITEM) 時間戳記 將指定欄位的儲存轉換為時間戳記。
to_datetime(ITEM) 日期時間 將指定欄位的儲存轉換為日期、時間或時間戳記值。
datetime_date(ITEM) 日期 傳回數字字串時間戳記的日期值。 請注意,這是唯一能夠讓您將數字(秒)轉換回日期的函數。 如果 ITEM 是字串,則透過剖析現行日期格式的字串來建立日期。 流程內容中指定的日期格式必須正確,此函數才能成功。 如果 ITEM 是數字,則會將它解譯為自基本日期 (或新紀元) 以來的秒數。 日期的分數會被截斷。 如果 ITEM 是時間戳記,則會傳回時間戳記的日期部分。 如果 ITEM 是日期,則會依原樣傳回。
date_before(DATE1, DATE2) 布林 如果 DATE1 所代表的日期或時間戳記在 DATE2 之前,那麼傳回 true 值。 否則,此函數會傳回值 0。
date_days_difference(DATE1, DATE2) 整數 以整數的形式傳回從 DATE1 所代表日期或時間戳記到 DATE2 所代表日期或時間戳記之間的天數。 如果 DATE2 早於 DATE1,則此函數會傳回一個負數。
date_in_days(DATE) 整數 以整數形式傳回從基準線日期到 DATE 所代表日期或時間戳記之間的天數。 如果 DATE 早於基準線日期,則此函數會傳回負數值。 必須包含有效日期,才能適當進行計算。 例如,您不應該指定 2001 年 2 月 29 日這個日期。 因為 2001 年不是閏年,所以這個日期並不存在。
date_in_months(DATE) 實數 以實數形式傳回從基準線日期到日期或時間戳記 DATE 的月數。 這是基於一個月 30.4375 天的大概圖例。 如果 DATE 早於基準線日期,則此函數會傳回負數值。 必須包含有效日期,才能適當進行計算。 例如,您不應該指定 2001 年 2 月 29 日這個日期。 因為 2001 年不是閏年,所以這個日期並不存在。
date_in_weeks(DATE) 實數 以實數形式傳回從基準線日期到日期或時間戳記 DATE 的週數。 這基於一週 7.0 天。 如果 DATE 早於基準線日期,則此函數會傳回負數值。 必須包含有效日期,才能適當進行計算。 例如,您不應該指定 2001 年 2 月 29 日這個日期。 因為 2001 年不是閏年,所以這個日期並不存在。
date_in_years(DATE) 實數 以實數形式傳回從基準線日期到日期或時間戳記 DATE 的年數。 這是基於一年 365.25 天的大概圖例。 如果 DATE 早於基準線日期,則此函數會傳回負數值。 必須包含有效日期,才能適當進行計算。 例如,您不應該指定 2001 年 2 月 29 日這個日期。 因為 2001 年不是閏年,所以這個日期並不存在。
date_months_difference (DATE1, DATE2) 實數 以實數形式傳回從日期或時間戳記 DATE1 到日期或時間戳記 DATE2 的月數。 這是基於一個月 30.4375 天的大概圖例。 如果 DATE2 早於 DATE1,則此函數會傳回一個負數。
datetime_date(YEAR, MONTH, DAY) 日期 建立給定 YEARMONTHDAY 的日期值。 引數必須是整數。
datetime_day(DATE) 整數 傳回給定 DATE 或時間戳記中的月份日期。 結果為範圍 1 到 31 內的一個整數。
datetime_day_name(DAY) 字串 傳回給定 DAY 的全稱。 該引數必須是介於 1(星期日)到 7(星期六)範圍內的整數。
datetime_hour(TIME) 整數 傳回某個 TIME 或時間戳記的小時部分。 結果為 0 到 23 範圍內的整數。
datetime_in_seconds(TIME) 實數 傳回 TIME 儲存的秒鐘部分。
datetime_in_seconds(DATE), datetime_in_seconds(DATETIME) 實數 傳回從目前 DATEDATETIME 到基準線日期 (1900-01-01) 之間的差分的累計秒數。
datetime_minute(TIME) 整數 傳回某個 TIME 或時間戳記的分鐘部分。 結果為 0 到 59 範圍內的整數。
datetime_month(DATE) 整數 傳回某個 DATE 或時間戳記的月部分。 結果為 1 到 12 範圍內的整數。
datetime_month_name (MONTH) 字串 傳回給定 MONTH 的全稱。 該引數必須是介於 1 到 12 範圍內的整數。
datetime_now 時間戳記 傳回做為時間印記的目前時間。
datetime_second(TIME) 整數 傳回某個 TIME 或時間戳記的秒鐘部分。 結果為 0 到 59 範圍內的整數。
datetime_day_short_name (DAY) 字串 傳回給定 DAY 的簡稱。 該引數必須是介於 1(星期日)到 7(星期六)範圍內的整數。
datetime_month_short_name (MONTH) 字串 傳回給定 MONTH 的簡稱。 該引數必須是介於 1 到 12 範圍內的整數。
datetime_time(HOUR, MINUTE, SECOND) 時間 傳回給定 HOURMINUTESECOND 的時間值。 引數必須是整數。
datetime_time(ITEM) 時間 傳回給定 ITEM的時間值。
datetime_timestamp(YEAR, MONTH, DAY, HOUR, MINUTE, SECOND) 時間戳記 傳回指定 YEARMONTHDAY小時分鐘 以及 SECOND 的時間戳記值。
datetime_timestamp(DATE, TIME) 時間戳記 傳回給定 DATETIME 的時間戳記值。
datetime_timestamp (NUMBER) 時間戳記 傳回給定秒數的時間戳記值。
datetime_weekday(DATE) 整數 傳回給定 DATE 或時間戳記中的星期。
datetime_year(DATE) 整數 傳回某個 DATE 或時間戳記的年份部分。 結果是一個整數,例如 2021。
date_weeks_difference (DATE1, DATE2) 實數 以實數形式傳回從日期或時間戳記 DATE1 到日期或時間戳記 DATE2 的週數。 這基於一週 7.0 天。 如果 DATE2 早於 DATE1,則此函數會傳回一個負數。
date_years_difference (DATE1, DATE2) 實數 以實數形式傳回從日期或時間戳記 DATE1 到日期或時間戳記 DATE2 的年數。 這是基於一年 365.25 天的大概圖例。 如果 DATE2 早於 DATE1,則此函數會傳回一個負數。
date_from_ywd(YEAR, WEEK, DAY) 整數 將年份、年中的第幾個星期以及星期幾轉換為使用 ISO 8601 標準的日期。
date_iso_day(DATE) 整數 傳回使用 ISO 8601 標準的日期中的星期幾。
date_iso_week(DATE) 整數 傳回使用 ISO 8601 標準的日期中的年中第幾個星期。
date_iso_year(DATE) 整數 傳回使用 ISO 8601 標準的日期中的年份。
time_before(TIME1, TIME2) 布林 如果 TIME1 所代表的時間或時間戳記在 TIME2 之前,則傳回 true 值。 否則,此函數會傳回值 0。
time_hours_difference (TIME1, TIME2) 實數 以實數形式傳回 TIME1TIME2 所代表的時間或時間戳記之間的小時差。 如果您在流程內容中選取 輪替天數/分鐘數 ,則會採用較高的 TIME1 值來參照前一天。 如果您未選取輪替選項,則較高的 TIME1 值會導致回覆值為負數。
time_in_hours(TIME) 實數 以實數的形式傳回 TIME 所代表的小時數。 例如,採用時間格式 HHMM 時,表示式 time_in_hours('0130') 的返回值為 1.5。 TIME 可以代表時間或時間戳記。
time_in_mins(TIME) 實數 以實數的形式傳回 TIME 所代表的分鐘數。 TIME 可以代表時間或時間戳記。
time_in_secs(TIME) 整數 以實數的形式傳回 TIME 所代表的秒數。 TIME 可以代表時間或時間戳記。
time_mins_difference(TIME1, TIME2) 實數 以實數形式傳回 TIME1TIME2 所代表的時間或時間戳記之間的分鐘差。 如果您在流程內容中選取 輪替天數/分鐘數 ,則會採用較高的 TIME1 值來參照前一天 (或前一小時,如果僅以現行格式指定分鐘及秒)。 如果您未選取輪替選項,則較高的 TIME1 值會導致回覆值為負數。
time_secs_difference(TIME1, TIME2) 整數 傳回 TIME1TIME2 所代表的時間或時間戳記之間的時差秒數(整數)。 如果您在流程內容中選取 輪替天數/分鐘數 ,則會採用較高的 TIME1 值來參照前一天 (或前一小時,如果僅以現行格式指定分鐘及秒)。 如果您未選取輪替選項,則較高的 TIME1 值會導致回覆值為負數。