2016-08-15 3 views
0

У меня COL_1, как timestamp, который выглядит так 5:04:00. Я хочу округлить его до того, что похоже на это 05:00:00.Круглое время в Терадате до 5 минут

Итак, в основном округлите до 5-минутного ведра. И, если нужно, добавьте начало нулевого часа.

Значение, 5:01:00 изменения в 5:00:00

14:59:00 -> 14:55:00

14:51:00 -> 14:50 : 00

7:13:00 -> 07:10:00

+0

Действительно ли это временная метка? Временная метка включает в себя дату. Нет ли секунд, минут? – dnoeth

+0

Мой плохой! Его a VARCHAR (5) – ASuit

+0

Нет секунд. Столбец фактически выглядит как 05:00 для 5AM в Teradata SQL Assistant. - @dnoeth – ASuit

ответ

1

Почему вы храните это в VarChar вместо Time или Interval?

CAST(col AS TIME(0) FORMAT 'hh:mi')  - 
((EXTRACT (MINUTE FROM 
    CAST(col AS TIME(0) FORMAT 'hh:mi') 
      ) MOD 5 
) * INTERVAL '1' MINUTE 
) 
+0

Удивительный! Это сработало! – ASuit

0

Попробуйте

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 

формат по мере необходимости.

Смежные вопросы