日期和時間函數
CLEM 包含一系列函數,用來處理具有字串變數(代表日期與時間)的日期時間儲存的欄位。使用的日期和時間格式是每個串流特定的,並在「串流內容」對話框中指定。日期與時間函數根據目前選定的格式來剖析日期與時間字串。
如果用兩位數指定日期中的年(即未指定世紀),則 IBM® SPSS® Modeler 將採用「串流內容」對話框中所指定的預設世紀。
註: 如果將資料函數後推到 SQL 或 IBM SPSS Analytic Server,那麼在 Analytic Server 資料來源後面的分支中,該資料內的任何日期格式字串 (to_date) 都必須與 SPSS Modeler 串流中指定的日期格式相符。
| 函數 | 結果 | 說明 |
|---|---|---|
@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) |
日期 | 建立給定 YEAR、MONTH、DAY 的日期值。引數必須是整數。 |
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) |
實數 | 傳回從目前 DATE 或 DATETIME 到基準線日期 (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) |
時間 | 傳回給定 HOUR、MINUTE 和 SECOND 的時間值。引數必須是整數。 |
datetime_time(ITEM) |
時間 | 傳回給定 ITEM 的時間值。 |
datetime_timestamp(YEAR, MONTH, DAY,小時,分鐘, SECOND) |
時間戳記 | 傳回指定 YEAR、MONTH、DAY、小時、分鐘 以及 SECOND 的時間戳記值。 |
datetime_timestamp(DATE, TIME) |
時間戳記 | 傳回給定 DATE 和 TIME 的時間戳記值。 |
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) |
實數 | 以實數形式傳回 TIME1 與 TIME2 所代表的時間或時間戳記之間的小時差。如果在「串流內容」對話框中選取轉換日/分鐘,則用 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) |
實數 | 以實數形式傳回 TIME1 與 TIME2 所代表的時間或時間戳記之間的分鐘差。如果您在串流內容對話框中選取輪替天數/分鐘數,則會採取 TIME1 的較高值來參照前一天(或前一小時,如果僅以現行格式指定了分鐘或秒數的話。) 如果不選取翻轉日選項,TIME1 的較大值會造成回覆值為負數。 |
time_secs_difference(TIME1, TIME2) |
整數 | 傳回 TIME1 和 TIME2 所代表的時間或時間戳記之間的時差秒數(整數)。如果您在串流內容對話框中選取輪替天數/分鐘數,則會採取 TIME1 的較高值來參照前一天(或前一小時,如果僅以現行格式指定了分鐘或秒數的話。) 如果您未選取輪替選項,則 TIME1 的較高值會導致傳回的值為負數。 |