ROUND_TIMESTAMP 标量函数
ROUND_TIMESTAMP标量函数返回一个时间戳,该时间戳被四舍五入到时间戳格式字符串指定的单位。 如果未指定格式字符串 ,则表达式将四舍五入到最近的一天,就像为格式字符串指定了“DD”一样。
该模式是 SYSIBM。
- 表达式
- FL 507 返回以下任何内置数据类型的值的表达式:日期、时间戳、字符串或图形字符串。 如果表达式是一个字符串或图形字符串,则它不能是CLOB或DBCLOB,其值必须是一个有效的时间戳字符串表示形式,实际长度不能超过255字节。 时间戳字符串表示中的时区将被忽略。 有关日期和时间戳的字符串表示形式的有效格式,请参阅日期时间值的字符串表示形式。仅直通支持: FL 507 如果表达式是日期, Db2 将函数传递给 IBM® Db2 Analytics Accelerator 作为仅传递表达式。 更多信息,请参阅 《使用仅传递表达式加速查询 》。
- format-string
- 返回内置字符串或图形字符串数据类型的表达式,其长度不超过255字节。 format-string 包含一个模板,用于说明如何对表达式表示的时间戳进行四舍五入。 例如,如果格式字符串为“DD”, 则表达式表示的时间戳将四舍五入到最近的一天。 format-string 必须是一个有效的模板,用于时间戳,且不能包含前导或尾随空格。
下表列出了格式字符串的允许值。
表 1. ROUND_TIMESTAMP和TRUNC_TIMESTAMP格式模型 格式化模型 格式模型舍入或截断说明 ROUND_TIMESTAMP 示例 TRUNC_TIMESTAMP示例 CC
SCC世纪。
比四位年份中的前两位数字大。 
对于 ROUND_TIMESTAMP,以本世纪第 50 年为整数。
输入值:
1897-12-04-12.22.22.000000
结果:
1901-01-01-00.00.00.000000输入值:
1897-12-04-12.22.22.000000
结果:
1801-01-01-00.00.00.000000syyyy
yyyy
year
syear
yyy
yyy
y年份。
对于 ROUND_TIMESTAMP,从 7 月 1 日起四舍五入到下一年的 1 月 1 日。
输入值:
1897-12-04-12.22.22.000000
结果:
1898-01-01-00.00.00.000000输入值:
1897-12-04-12.22.22.000000
结果:
1897-01-01-00.00.00.000000iyyy
iyyy
iy
iISO年份。
对于ROUND_TIMESTAMP,7月1日四舍五入到下一个ISO年份的第一天。 ISO 年的第一天定义为第一个 ISO 周的星期一。
输入值:
1897-12-04-12.22.22.000000
结果:
1898-01-03-00.00.00.000000输入值:
1897-12-04-12.22.22.000000
结果:
1897-01-04-00.00.00.000000Q 四分之一。
对于 ROUND_TIMESTAMP,四舍五入到季度第二个月的第 16 天。
输入值:
1999-06-04-12.12.30.000000
结果:
1999-07-01-00.00.00.000000输入值:
1999-06-04-12.12.30.000000
结果:
1999-04-01-00.00.00.000000month
mon
mm
rm月。
对于 ROUND_TIMESTAMP,取整日期为每月的第 16 天。
输入值:
1999-06-18-12.12.30.000000
结果:
1999-07-01-00.00.00.000000输入值:
1999-06-18-12.12.30.000000
结果:
1999-06-01-00.00.00.000000全球 一周中作为一年的第一天的日期。
对于 ROUND_TIMESTAMP,在一周的第 4 天的第 12 个小时,相对于一年的第一天向上取整。
输入值:
2000-05-05-12.12.30.000000
结果:
2000-05-06-00.00.00.000000输入值:
2000-05-05-12.12.30.000000
结果:
2000-04-29-00.00.00.000000IW 一周中作为一个 ISO 年的第一天的日期。
对于 ROUND_TIMESTAMP,相对于 ISO 年的第一天,在每周第 4 天的 12 点向上取整。
输入值:
2000-05-05-12.12.30.000000
结果:
2000-05-08-00.00.00.000000输入值:
2000-05-05-12.12.30.000000
结果:
2000-05-01-00.00.00.000000W 一周中作为一个月的第一天的日期。
对于 ROUND_TIMESTAMP,相对于每月的第一天,每周第 4 天的 12 点向上取整。
输入值:
2000-06-21-12.12.30.000000
结果:
2000-06-22-00.00.00.000000输入值:
2000-06-21-12.12.30.000000
结果:
2000-06-15-00.00.00.000000DDD
DD
J天。
对于 ROUND_TIMESTAMP,在一天的第 12 个小时向上取整。
输入值:
2000-05-17-12.59.59.000000
结果:
2000-05-18-00.00.00.000000输入值:
2000-05-17-12.59.59.000000
结果:
2000-05-17-00.00.00.000000日
DY
D一周的开始日期。
对于 ROUND_TIMESTAMP,以一周中第 4 天的 12 点为基准向上取整。 一周的第一天总是星期天。
输入值:
2000-05-17-12.59.59.000000
结果:
2000-05-21-00.00.00.000000输入值:
2000-05-17-12.59.59.000000
结果:
2000-05-14-00.00.00.000000HH
HH12
HH24小时。
对于ROUND_TIMESTAMP,以30分钟为整点。
输入值:
2000-05-17-23.59.59.000000
结果:
2000-05-18-00.00.00.000000输入值:
2000-05-17-23.59.59.000000
结果:
2000-05-17-23.00.00.000000MI 一分钟。
对于ROUND_TIMESTAMP,以30秒为整。
输入值:
2000-05-17-23.58.45.000000
结果:
2000-05-17-23.59.00.000000输入值:
2000-05-17-23.58.45.000000
结果:
2000-05-17-23.58.00.000000SS 其次,
对于ROUND_TIMESTAMP,在500000微秒时向上取整。
输入值:
2000-05-17-23.58.45.500000
结果:
2000-05-17-23.58.46.000000输入值:
2000-05-17-23.58.45.500000
结果:
2000-05-17-23.58.45.000000
如果表达式没有数据类型为“无时区时间戳”,则按如下方式转换表达式 :
- 如果表达式是带有时区的TIMESTAMP,则表达式将转换为不带有时区的TIMESTAMP,精度与表达式相同。
- 否则, 表达式将转换为不带时区的TIMESTAMP(6)。
函数的结果与表达式转换后的数据类型相同。
结果可以为空; 如果任何自变量为空,那么结果为空值。
结果CCSID是参数编码方案的适当CCSID,结果子类型是CCSID的适当子类型。
示例
- 将输入的时间戳设置为主机变量 RND_TMSTMP ,并取整到最接近的年份值。
设置的值为“ 2001-01-01-00.00.00.000000 ”。SET :RND_TMSTMP = ROUND_TIMESTAMP(TIMESTAMP_FORMAT('2000-08-14 17:30:00', 'YYYY-MM-DD HH24:MI:SS'), 'YEAR'); - 假设 PRSTSZ 是一个SQL变量,其TIMESTAMP WITH TIME ZONE值为' 2008-04-15.20.00.000000-08:30 '。 输入值首先转换为不带时区的 TIMESTAMP(如 ' 2008-04-15.20.00.000000 '),用于ROUND_TIMESTAMP 函数。
ROUND_TIMESTAMP函数返回一个不含时区的TIMESTAMP值,即' 2008-04-16.00.00.000000 '。SELECT ROUND_TIMESTAMP(PRSTSZ) FROM PROJECT;
