Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / months_between ora-->postgres / 7 сообщений из 7, страница 1 из 1
10.06.2015, 11:01
    #38980878
Legushka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
months_between ora-->postgres
помогите реализовать months_between на постгресе

дело в том что в ора она возвращает результат с плавающей точкой
нашел вариант для постгреса:
Код: sql
1.
select extract(year from age('2015-03-13', '2015-01-14'))*12 + extract(month from age('2015-03-13', '2015-01-14'))

но он вернет 1, в ора это будет 1,96774193548387

к сожалению результат ннадо как в ора-(
...
Рейтинг: 0 / 0
10.06.2015, 11:06
    #38980885
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
months_between ora-->postgres
Legushkaпомогите реализовать months_between на постгресе

дело в том что в ора она возвращает результат с плавающей точкой
нашел вариант для постгреса:
Код: sql
1.
select extract(year from age('2015-03-13', '2015-01-14'))*12 + extract(month from age('2015-03-13', '2015-01-14'))

но он вернет 1, в ора это будет 1,96774193548387

к сожалению результат ннадо как в ора-(

А вот 3 месяца это сколько дней конкретно?
Ответите на этот вопрос - я вам подскажу как считать ;)

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
10.06.2015, 11:10
    #38980891
Legushka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
months_between ora-->postgres
кажется в оракле берется из расчета как 31 день
...
Рейтинг: 0 / 0
10.06.2015, 11:41
    #38980932
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
months_between ora-->postgres
Legushkaкажется в оракле берется из расчета как 31 день

ну вот и возьмите разницу в днях и поделите на 31::float

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
10.06.2015, 12:38
    #38980990
Legushka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
months_between ora-->postgres
Maxim Boguk, спасибо

select extract(year from age('2015-03-15', '2015-01-16'))*12 + extract(month from age('2015-03-15', '2015-01-16'))+extract(day from age('2015-03-15', '2015-01-16'))/31
...
Рейтинг: 0 / 0
10.06.2015, 12:58
    #38981021
p2.
p2.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
months_between ora-->postgres
оракловые add_months, months_beteeen с интервальной арифметикой несовместимы - последний день месяца может быть разным числом, но разница дает целое число месяцев.
...
Рейтинг: 0 / 0
10.06.2015, 13:21
    #38981050
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
months_between ora-->postgres
Legushkaкажется в оракле берется из расчета как 31 день"когда кажется - нужно молиться"© :-)

Документация оракла вполне себе четко описывает алгоритм расчета:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions089.htm MONTHS_BETWEEN returns number of months between dates date1 and date2. If date1 is later than date2, then the result is positive. If date1 is earlier than date2, then the result is negative. If date1 and date2 are either the same days of the month or both last days of months, then the result is always an integer. Otherwise Oracle Database calculates the fractional portion of the result based on a 31-day month and considers the difference in time components date1 and date2.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / months_between ora-->postgres / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]