2014-12-10 3 views
1

У меня есть отметка времени «2161 день 21:32:40», и я хочу, чтобы эти дни и часы, ТОЛЬКО В ЧАСЫ .. что-то вроде (2161 * 24 + 21 + 32/60 + 40/60/60) = xx.xxx hoursконвертировать временную метку в часы - postgreSQL

Я не могу найти приятное решение. Попробовал с экстрактом и другими методами без успеха.

благодаря

+0

Это интервал, а не временная метка. –

ответ

4

Используйте extract (epoch), чтобы получить количество секунд, а затем разделить на 3600:

select extract(epoch from interval '2161 days 21:32:40')/3600.00 as hours; 

Важное примечание о деталях реализации: это считается секунд между epoch + interval и epoch. Использование другой начальной точки может привести к другому результату, поэтому, если интервал, который вы используете, является результатом разницы между двумя временными метками, вам будет лучше вычислять разницу в секундах между этими двумя временными метками.

+0

Могу ли я использовать вместо этого «2161 дней 21:32:40»? Я хочу что-то вроде (TO_TIMESTAMP ('2014-12-10 09:19:03', 'YYYY-MM-DD HH24: MI: SS') - TO_TIMESTAMP (X.DATE_DATATYPE)) FROM TABLE_X X – Deiwys

+0

Конечно ... Извлечение эпоха из первой экспресс, выдержка из второй, вычисляет разницу между ними и делит количество секунд на 3600. –

+0

эпоха не воспринимает возврат из моего запроса (timestamp1 - timestamp2). – Deiwys