日期和時間函數

CLEM 包含一系列函數,用來處理具有字串變數(代表日期與時間)的日期時間儲存的欄位。使用的日期和時間格式是每個串流特定的,並在「串流內容」對話框中指定。日期與時間函數根據目前選定的格式來剖析日期與時間字串。

如果用兩位數指定日期中的年(即未指定世紀),則 IBM® SPSS® Modeler 將採用「串流內容」對話框中所指定的預設世紀。

註: 如果將資料函數後推到 SQL 或 IBM SPSS Analytic Server,那麼在 Analytic Server 資料來源後面的分支中,該資料內的任何日期格式字串 (to_date) 都必須與 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(小時,分鐘, SECOND) 時間 傳回給定 HOURMINUTESECOND 的時間值。引數必須是整數。
datetime_time(ITEM) 時間 傳回給定 ITEM 的時間值。
datetime_timestamp(YEAR, MONTH, DAY,小時,分鐘, SECOND) 時間戳記 傳回指定 YEARMONTHDAY小時分鐘 以及 SECOND 的時間戳記值。
datetime_timestamp(DATE, TIME) 時間戳記 傳回給定 DATETIME 的時間戳記值。
datetime_timestamp (NUMBER) 時間戳記 傳回給定秒數的時間戳記值。
datetime_weekday(DATE) 整數 傳回給定 DATE 或時間戳記中的星期。
datetime_year(DATE) 整數 傳回某個 DATE 或時間戳記的年份部分。結果為一個整數,如 2002。
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 的較高值會導致傳回的值為負數。