Надо интервал времени разделить на интервал

PCContra
Дата: 03.06.2015 07:56:52
Хочу узнать, сколько дней прошло с 20 мая до сегодня.
SELECT (NOW() - '2015-05-20'::DATE)/(interval '1 day')

Ругается.
В принципе, я ожидал увидеть что-то типа 14.525511 (дней)

Как мне добиться такого ответа?
Alexius
Дата: 03.06.2015 08:20:09
PCContra,

select extract(epoch from (now() - '2015-05-20'::date)) / extract(epoch from interval '1 day');
PCContra
Дата: 05.06.2015 07:59:54
Спасибо. Я тут в мануале по Вашей подсказке нашел extract в главе 9.9 и 9.9.1 на 264й странице, попробовал и остался доволен таким результатом:
SELECT CURRENT_DATE - '2015-05-20'

Пишет как раз количество дней между двумя датами. И работает очень быстро
qwwq
Дата: 05.06.2015 08:42:49
PCContra
Спасибо. Я тут в мануале по Вашей подсказке нашел extract в главе 9.9 и 9.9.1 на 264й странице, попробовал и остался доволен таким результатом:
SELECT CURRENT_DATE - '2015-05-20'

Пишет как раз количество дней между двумя датами. И работает очень быстро

то что даты вычитаются с целым результатом какбе не вопрос
вопрос какбе вот в этом:
автор
я ожидал увидеть что-то типа 14.525511 (дней)

-- и вдруг -- целого ему достаточно.
трахтибидох
PCContra
Дата: 05.06.2015 15:18:55
Вы меня подловили, qwwq))) Вы очень внимательны к деталям.
Мне достаточно было целого дня.
А первоначальное решение, я так понимаю, для получения дробного значения
qwwq
Дата: 07.06.2015 13:35:08
PCContra
Вы меня подловили, qwwq))) Вы очень внимательны к деталям.
Мне достаточно было целого дня.
А первоначальное решение, я так понимаю, для получения дробного значения

я хотел вам сразу посоветовать вычитать даты

SELECT (NOW()::DATE - '2015-05-20'::DATE)


но алексус формально был прав

+
а интервалы в стандарте не делятся, потому как не упорядоченный тип.
делить интервалы , вообще говоря дело не однозначное: высокосный год и обычный год -- '1 year'::interval, а дней в них разное количество. То же об интервалах "месяц".
но давно на форуме была ф-я для деления "стандартизированного понимания интервалов" -- от LeXa NalBat -- я против такого, для неокрепших умов, так как оно маскирует проблему, но за то, чтобы приводить код в качестве иллюстрации возможностей.

заметим, что если выделить упорядоченный подтип интервалов, без месяцев , годов и т.п. разновеликих периодов -- проблема снимется, будет тип "калиброванные интервалы" [день, час, минута, секунда и т.п.] и его расширение "фольклёрные интервалы" .
на калиброванных можно будет ввести операцию деления. а на фольклёрных -- калибровку "в той или иной системе координат, в той или иной её точке" (каковая неявно существует -- при добавлении интервала к конкретной дате вы получаете вполне определенный результат -- т.е. длительность "непостоянного" (по длительности) интервала полностью определена в точке приложения).