Ниже для стандартного SQL BigQuery (при условии, что ваше поле имеет тип TIMESTAMP, как указано в заголовке вопроса)
TIMESTAMP_SECONDS(900 * DIV(UNIX_SECONDS(dt_from) + 450, 900))
Вы можете проверить, поиграть с ним, используя фиктивные данные из вашего вопроса
#standardSQL
WITH `project.dataset.table` AS (
SELECT TIMESTAMP '2018-10-24 01:05:00' dt_from UNION ALL
SELECT '2018-10-24 01:08:00' UNION ALL
SELECT '2018-10-24 01:12:00'
)
SELECT dt_from, TIMESTAMP_SECONDS(900 * DIV(UNIX_SECONDS(dt_from) + 450, 900)) dt_to
FROM `project.dataset.table`
с результатом
Row dt_from dt_to
1 2018-10-24 01:05:00 UTC 2018-10-24 01:00:00 UTC
2 2018-10-24 01:08:00 UTC 2018-10-24 01:15:00 UTC
3 2018-10-24 01:12:00 UTC 2018-10-24 01:15:00 UTC
В случае, если ваше поле имеет тип DATETIME (как указано в самом вопросе) - вы можете использовать приведенную ниже версию выше
#standardSQL
WITH `project.dataset.table` AS (
SELECT DATETIME '2018-10-24 01:05:00' dt_from UNION ALL
SELECT '2018-10-24 01:08:00' UNION ALL
SELECT '2018-10-24 01:12:00'
)
SELECT dt_from, DATETIME(TIMESTAMP_SECONDS(900 * DIV(UNIX_SECONDS(TIMESTAMP(dt_from)) + 450, 900))) dt_to
FROM `project.dataset.table`