Teradata 中的舍入时间为 5 分钟
Round time in Teradata to 5 minute
我有 COL_1 作为时间戳,看起来像这样 5:04:00。我想把它四舍五入成这样 05:00:00.
所以基本上四舍五入到 5 分钟一桶。并且,如果需要,将前导零添加到小时数。
意思是,5:01:00变为05:00:00
14:59:00-->14:55:00
14:51:00-->14:50:00
7:13:00-->07:10:00
试试这个
CAST(TO_CHAR(INPUT_TS,'YYYY-MM-DD') || ' ' ||
CASE WHEN EXTRACT(MINUTE FROM INPUT_TS) > 30 THEN
TRIM(TO_CHAR(EXTRACT(HOUR FROM INPUT_TS) + 1,'00'))
ELSE TRIM(TO_CHAR(EXTRACT(HOUR FROM INPUT_TS) ,'00'))
END || ':00:00' AS TIMESTAMP(6)) AS YOUR_TS
根据需要格式化。
为什么将其存储在 VarChar 而不是时间或间隔中?
CAST(col AS TIME(0) FORMAT 'hh:mi') -
( (EXTRACT (MINUTE FROM
CAST(col AS TIME(0) FORMAT 'hh:mi')
) MOD 5
) * INTERVAL '1' MINUTE
)
我有 COL_1 作为时间戳,看起来像这样 5:04:00。我想把它四舍五入成这样 05:00:00.
所以基本上四舍五入到 5 分钟一桶。并且,如果需要,将前导零添加到小时数。
意思是,5:01:00变为05:00:00
14:59:00-->14:55:00
14:51:00-->14:50:00
7:13:00-->07:10:00
试试这个
CAST(TO_CHAR(INPUT_TS,'YYYY-MM-DD') || ' ' ||
CASE WHEN EXTRACT(MINUTE FROM INPUT_TS) > 30 THEN
TRIM(TO_CHAR(EXTRACT(HOUR FROM INPUT_TS) + 1,'00'))
ELSE TRIM(TO_CHAR(EXTRACT(HOUR FROM INPUT_TS) ,'00'))
END || ':00:00' AS TIMESTAMP(6)) AS YOUR_TS
根据需要格式化。
为什么将其存储在 VarChar 而不是时间或间隔中?
CAST(col AS TIME(0) FORMAT 'hh:mi') -
( (EXTRACT (MINUTE FROM
CAST(col AS TIME(0) FORMAT 'hh:mi')
) MOD 5
) * INTERVAL '1' MINUTE
)