日期和时间函数

CLEM 包含一系列函数,用于处理具有表示日期和时间的字符串变量的日期时间存储的字段。 可在“流属性”对话框中指定具体到每个流的日期和时间格式。 日期和时间函数根据当前选定的格式来解析日期和时间字符串。

在仅使用两位数 (即,未指定世纪) 的日期中指定年份时, IBM® SPSS® Modeler 将使用在 "流属性" 对话框中指定的缺省世纪。

注: 如果将数据函数推送回 SQL 或 IBM SPSS Analytic Server,那么在 Analytic Server 数据源之后的分支中,该数据中的任何日期格式字符串 (to_date) 都必须与 SPSS Modeler 流中指定的日期格式相匹配。
表 1. CLEM 日期和时间函数
函数 结果 描述
@TODAY String 如果在流属性对话框中选中了翻转日/分钟,那么此函数将采用当前日期格式的当前日期字符串。 如果您采用两位数日期格式且未选择 翻转日/分钟 ,该函数将在当前服务器上返回 $null$
to_time(ITEM) 时间 将指定字段的存储值转换为时间。
to_date(ITEM) 日期 将指定字段的存储值转换为日期。
to_timestamp(ITEM) 时间戳记 将指定字段的存储值转换为时间戳记。
to_datetime(ITEM) 日期时间 将指定字段的存储值转换为日期、时间或时间戳记值。
datetime_date(ITEM) 日期 返回数字字符串时间戳记的日期值。 请注意,这是唯一允许您将数字(以秒数记)转换回日期的函数。 如果 ITEM 为字符串,将以当前日期格式解析字符串来创建日期。 流属性对话框中指定的日期格式必须正确,这样此函数才能成功执行。 如果 ITEM 是一个数字,那么会将其解释为自基本日期(或戳记)以来的秒数。 不足一天的部分将截断。 如果 ITEM 为时间戳记,将返回时间戳记的日期部分。 如果 ITEM 为日期,将返回未更改的日期。
date_add_years(NUM, DATE) 日期 将指定日期部分 YEAR 的指定值添加到 DATE 或时间戳记之后,返回新的 DATE 或时间戳记。
date_add_years(NUM,TIMESTAMP) 时间戳记 将指定日期部分 YEAR 的指定值添加到 DATE 或时间戳记之后,返回新的 DATE 或时间戳记。
date_add_months(NUM, DATE) 日期 将指定日期部分 MONTH 的指定值添加到 DATE 或时间戳记之后,返回新的 DATE 或时间戳记。
date_add_months(NUM,TIMESTAMP) 时间戳记 将指定日期部分 MONTH 的指定值添加到 DATE 或时间戳记之后,返回新的 DATE 或时间戳记。
date_add_weeks(NUM, DATE) 日期 将指定日期部分 WEEK 的指定值添加到 DATE 或时间戳记之后,返回新的 DATE 或时间戳记。
date_add_weeks(NUM,TIMESTAMP) 时间戳记 将指定日期部分 WEEK 的指定值添加到 DATE 或时间戳记之后,返回新的 DATE 或时间戳记。
date_add_days(NUM, DATE) 日期 将指定日期部分 DAY 的指定值添加到 DATE 或时间戳记之后,返回新的 DATE 或时间戳记。
date_add_days(NUM,TIMESTAMP) 时间戳记 将指定日期部分 DAY 的指定值添加到 DATE 或时间戳记之后,返回新的 DATE 或时间戳记。
date_before(DATE1, DATE2) BOOLEAN 如果 DATE1 所表示的日期或时间戳记在 DATE2 之前,那么返回真值。 否则,此函数将返回值 0。
date_days_difference(DATE1, DATE2) 整数 以整数的形式返回从日期或时间戳记 DATE1 到日期或时间戳记 DATE2 的天数。 如果 DATE2DATE1 之前,那么该函数返回负值。
date_in_days(DATE) 整数 以整数形式返回从基线日期到日期或时间戳记 DATE 的天数。 如果 DATE 在基线日期之前,那么该函数返回负数。 为了正确进行计算,必须包括有效日期。 例如,不应将日期指定为 2001 年 2 月 29 日。 因为 2001 年并非闰年,所以上述日期不存在。
date_in_months(DATE) REAL 以实数形式返回从基线日期到日期或时间戳记 DATE 的月数。 这是基于每月 30.4375 天的近似数字。 如果 DATE 在基线日期之前,那么该函数返回负数。 为了正确进行计算,必须包括有效日期。 例如,不应将日期指定为 2001 年 2 月 29 日。 因为 2001 年并非闰年,所以上述日期不存在。
date_in_weeks(DATE) REAL 以实数形式返回从基线日期到日期或时间戳记 DATE 的周数。 这基于每周 7.0 天。 如果 DATE 在基线日期之前,那么该函数返回负数。 为了正确进行计算,必须包括有效日期。 例如,不应将日期指定为 2001 年 2 月 29 日。 因为 2001 年并非闰年,所以上述日期不存在。
date_in_years(DATE) REAL 以实数形式返回从基线日期到日期或时间戳记 DATE 的年数。 这是基于每年 365.25 天的近似数字。 如果 DATE 在基线日期之前,那么该函数返回负数。 为了正确进行计算,必须包括有效日期。 例如,不应将日期指定为 2001 年 2 月 29 日。 因为 2001 年并非闰年,所以上述日期不存在。
date_months_difference (DATE1, DATE2) REAL 以实数形式返回从日期或时间戳记 DATE1 到日期或时间戳记 DATE2 的月数。 这是基于每月 30.4375 天的近似数字。 如果 DATE2DATE1 之前,那么该函数返回负值。
datetime_date(YEAR, MONTH, DAY) 日期 创建给定 YEARMONTHDAY 的日期值。 参数必须为整数。
datetime_day(DATE) 整数 对给定的 DATE 或时间戳记,返回其所在月份的天数据。 结果为范围 1 到 31 内的一个整数。
datetime_day_name(DAY) String 返回给定 DAY 的全称。 参数必须是 1(周日)至 7
datetime_hour(TIME) 整数 返回某个 TIME 或时间戳记的小时部分。 结果为 0 到 23 范围内的整数。
datetime_in_seconds(TIME) REAL 返回 TIME 存储的秒钟部分。
datetime_in_seconds(DATE), datetime_in_seconds(DATETIME) REAL 返回从当前 DATEDATETIME 到基线日期 (1900-01-01) 之间的差值的累积秒数。
datetime_minute(TIME) 整数 返回某个 TIME 或时间戳记的分钟部分。 结果为 0 到 59 范围内的整数。
datetime_month(DATE) 整数 返回某个 DATE 或时间戳记的月份部分。 结果为 1 到 12 范围内的整数。
datetime_month_name (MONTH) String 返回给定 MONTH 的全称。 参数必须为范围 1 到 12 内的整数。
datetime_now 时间戳记 以时间戳记形式返回当前时间。
datetime_second(TIME) 整数 返回某个 TIME 或时间戳记的秒钟部分。 结果为 0 到 59 范围内的整数。
datetime_day_short_name (DAY) String 返回给定 DAY 的简称。 参数必须是 1(周日)至 7
datetime_month_short_name (MONTH) String 返回给定 MONTH 的简称。 参数必须为范围 1 到 12 内的整数。
datetime_time(HOUR, MINUTE, SECOND) 时间 返回给定 HOURMINUTESECOND 的时间值。 参数必须为整数。
datetime_time(ITEM) 时间 返回给定 ITEM 的时间值。
datetime_timestamp(YEAR, MONTH, DAY, HOUR, MINUTE, SECOND) 时间戳记 返回指定 YEARMONTHDAYHOURMINUTE 以及 SECOND 的时间戳记值。
datetime_timestamp(DATE, TIME) 时间戳记 返回给定 DATETIME 的时间戳记值。
datetime_timestamp (NUMBER) 时间戳记 返回给定秒数的时间戳记值。
datetime_weekday(DATE) 整数 对给定 DATE 或时间戳记,返回其所在周的天数据。
datetime_year(DATE) 整数 返回某个 DATE 或时间戳记的年份部分。 结果为一个整数,如 2002。
date_weeks_difference (DATE1, DATE2) REAL 以实数形式返回从日期或时间戳记 DATE1 到日期或时间戳记 DATE2 的周数。 这基于每周 7.0 天。 如果 DATE2DATE1 之前,那么该函数返回负值。
date_years_difference (DATE1, DATE2) REAL 以实数形式返回从日期或时间戳记 DATE1 到日期或时间戳记 DATE2 的年数。 这是基于每年 365.25 天的近似数字。 如果 DATE2DATE1 之前,那么该函数返回负值。
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_add_hours(NUM, DATE) 日期 将指定时间部分 HOUR 的指定值添加到 TIME 或时间戳记之后,返回新的 TIME 或时间戳记。
time_add_hours(NUM,TIMESTAMP) 时间戳记 将指定时间部分 HOUR 的指定值添加到 TIME 或时间戳记之后,返回新的 TIME 或时间戳记。
time_add_minutes(NUM, DATE) 日期 将指定时间部分 MINUTE 的指定值添加到 TIME 或时间戳记之后,返回新的 TIME 或时间戳记。
time_add_minutes(NUM,TIMESTAMP) 时间戳记 将指定时间部分 MINUTE 的指定值添加到 TIME 或时间戳记之后,返回新的 TIME 或时间戳记。
time_add_seconds(NUM, DATE) 日期 将指定时间部分 SECOND 的指定值添加到 TIME 或时间戳记之后,返回新的 TIME 或时间戳记。
time_add_seconds(NUM,TIMESTAMP) 时间戳记 将指定时间部分 SECOND 的指定值添加到 TIME 或时间戳记之后,返回新的 TIME 或时间戳记。
time_before(TIME1, TIME2) BOOLEAN 如果 TIME1 所表示的时间或时间戳记在 TIME2 之前,则返回真值。 否则,此函数将返回值 0。
time_hours_difference (TIME1, TIME2) REAL 以实数形式返回时间或时间戳记 TIME1TIME2 之间的小时差。 如果在“流属性”对话框中选择翻转日/分钟,则用 TIME1 的较大值表示前一天。 如果不选择翻转日选项,则较大的 TIME1 值将造成返回值为负数。
time_in_hours(TIME) REAL 以实数的形式返回 TIME 所表示的小时数。 例如,采用时间格式 HHMM 时,表达式 time_in_hours('0130') 的返回值为 1.5。 TIME 可表示时间或时间戳。
time_in_mins(TIME) REAL 以实数的形式返回 TIME 所表示的分钟数。 TIME 可表示时间或时间戳。
time_in_secs(TIME) 整数 以实数的形式返回 TIME 所表示的秒数。 TIME 可表示时间或时间戳。
time_mins_difference(TIME1, TIME2) REAL 以实数形式返回时间或时间戳记 TIME1TIME2 之间的分钟差。 如果在“流选项”对话框中选择翻转日/分钟,则将采用 TIME1 的较大值来指代前一天(仅当在当前格式中指定分和秒时,指代前一小时)。 如果不选择翻转日选项,TIME1 的较大值会造成返回值为负数。
time_secs_difference(TIME1, TIME2) 整数 返回 TIME1TIME2 所表示的时间或时间戳记之间的时差秒数(整数)。 如果在“流选项”对话框中选择翻转日/分钟,则将采用 TIME1 的较大值来指代前一天(仅当在当前格式中指定分和秒时,指代前一小时)。 如果不选择翻转日选项,则较大的 TIME1 值将造成返回值为负数。