EXTRACT 标量函数 (scalar function)
EXTRACT函数根据其参数返回日期或时间戳的一部分。
提取日期值:
提取时间值:
提取时区值:
该模式是 SYSIBM。
结果可以为空值;如果参数为空值,那么结果为空值。
- 提取日期值
- 年
- 指定返回日期表达式或时间戳表达式的年份部分。 结果与YEAR标量函数相同。 更多信息,请参阅 YEAR标量函数。
- 月
- 指定返回日期表达式或时间戳表达式的月份部分。 结果与 MONTH 标量函数相同。 更多信息,请参阅 MONTH 标量函数。
- DAY
- 指定返回日期表达式或时间戳表达式的日期部分。 结果与DAY标量函数相同。 更多信息,请参阅 DAY标量函数。
- 日期表达式
- 返回内置日期或内置字符串数据类型的值的表达式。
如果日期表达式是一个字符串或图形字符串,则它不能是CLOB或DBCLOB,其值必须是一个有效的日期字符串或图形字符串表示形式。 日期字符串表示的有效格式,请参阅日期时间值的字符串表示。
- 时间戳表达式
- 返回内置时间戳或内置字符串数据类型值的表达式。
如果时间戳表达式是一个字符串或图形字符串,则它不能是CLOB或DBCLOB,其值必须是一个有效的时间戳字符串或图形字符串表示。 有关时间戳字符串表示的有效格式,请参阅日期时间值的字符串表示。
- 提取时间值
- HOUR
- 指定返回时间表达式或时间戳表达式中的小时部分。 结果与标量函数HOUR相同。 更多信息,请参阅 HOUR标量函数。
- 分钟
- 指定返回时间表达式或时间戳表达式的最小部分。 结果与MINUTE标量函数相同。 更多信息,请参阅 MINUTE标量函数。
- SECOND
- 指定返回时间表达式或时间戳表达式的第二部分。 结果与SECOND标量函数完全相同,其精度和范围取决于时间表达式或时间戳表达式的类型。 更多信息,请参阅第二标量函数。
- 时间表达
- 返回内置时间或内置字符串数据类型值的表达式。
如果时间表达式是一个字符串或图形字符串,则它不能是CLOB或DBCLOB,其值必须是一个有效的时间字符串表示形式。 有关时间字符串表示的有效格式,请参阅日期时间值的字符串表示。
- 时间戳表达式
- 返回内置时间戳或内置字符串数据类型值的表达式。
如果时间戳表达式是一个字符串或图形字符串,则它不能是CLOB或DBCLOB,其值必须是一个时间戳的有效字符串表示形式。 有关时间戳字符串表示的有效格式,请参阅日期时间值的字符串表示。
- 提取时区值
- TIMEZONE_HOUR
- 指定返回时间戳值时区中的小时部分。 仅当第二个参数为时间戳表达式且时间戳表达式包含时区时,才能指定 TIMEZONE_HOUR。
- TIMEZONE_MINUTE
- 指定返回时间戳值时区中的分钟部分。 仅当第二个参数为时间戳表达式且时间戳表达式包含时区时,才能指定 TIMEZONE_MINUTE。
的价值观 TIMEZONE_HOURTIMEZONE_MINUTE 要么都为非负数,要么都为非正数。
如果时间戳表达式参数包含时区,则结果由日期时间值的 UTC 表示法确定。
函数结果的数据类型取决于指定的日期时间值的组成部分:
- 如果指定了以下条件之一,则结果为INTEGER:
- 年
- 月
- DAY
- HOUR
- 分钟
- TIMEZONE_HOUR
- TIMEZONE_MINUTE
- 如果使用 TIMESTAMP( p ) 值指定 SECOND,则结果为 DECIMAL(2+ p, p ),其中 p 是秒的小数部分精度。
- 如果SECOND指定了TIME值或TIME或时间戳的字符串表示形式,则结果为DECIMAL(8,6)。 小数位包含小数秒。
- 示例 1:
- 假设列PRSTDATE的内部值等于2010-12-25。 以下语句返回值12:
SELECT EXTRACT(MONTH FROM PRSTDATE) FROM PROJECT; - 示例 2:
假设宿主变量 PRSTSZ 的值为 2008-02-29-20.00.00.000000-08.30:
SELECT语句返回值4,即输入的UTC时间日期值的时间。SELECT EXTRACT(HOUR FROM :PRSTSZ) FROM PROJECT;若要返回与输入值相同的小时值,请在使用EXTRACT函数前将值转换为不带时区的TIMESTAMP:
SELECT语句返回值20,即主机变量中最初以字符串形式表示的小时数。SELECT EXTRACT(HOUR FROM CAST (:PRSTSZ AS TIMESTAMP ) ) FROM PROJECT;SELECT EXTRACT(TIMEZONE_HOUR FROM :PRSTSZ) FROM PROJECT;SELECT语句返回的值为 -8。
SELECT语句返回的值为-30。SELECT EXTRACT(TIMEZONE_MINUTE FROM :PRSTSZ) FROM PROJECT;
