日期和时间函数

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) 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) 字符串 返回给定 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) 字符串 返回给定 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) 时间戳记 返回指定 YEARMONTHDAYHOURMINUTE 以及 SECOND 的时间戳记值。
datetime_timestamp(DATE, TIME) 时间戳记 返回给定 DATETIME 的时间戳记值。
datetime_timestamp (NUMBER) 时间戳记 返回给定秒数的时间戳记值。
datetime_weekday(DATE) 整数 对给定 DATE 或时间戳记,返回其所在周的天数据。
datetime_year(DATE) 整数 返回某个 DATE 或时间戳记的年份部分。 结果是一个整数,如2021。
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_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 会导致返回值为负数。