powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как сделать такой запрос с датами?
7 сообщений из 7, страница 1 из 1
Как сделать такой запрос с датами?
    #39511154
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В SQL Server есть такой запрос

Код: sql
1.
2.
3.
select 
    DATEADD(year,-ISNULL(yearest,0),
    DATEADD(MONTH, -ISNULL(monthest,0), modified_established)) dateestablished from clients



Как корректно сделать такой же в PostgreSQL?
...
Рейтинг: 0 / 0
Как сделать такой запрос с датами?
    #39511306
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

Чтоб ещё знать что этот запрос делает?..

Работу с датой и временем в SQL Server-е так и не осилил…
...
Рейтинг: 0 / 0
Как сделать такой запрос с датами?
    #39511312
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorovРолг Хупин,

Чтоб ещё знать что этот запрос делает?..

Работу с датой и временем в SQL Server-е так и не осилил…

о, спасибо!
...
Рейтинг: 0 / 0
Как сделать такой запрос с датами?
    #39511328
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

Проще всего интервалами воспользоваться:
Код: sql
1.
2.
SELECT now() + INTERVAL '0 years 2 months';
SELECT now() + (coalesce(0, 0)||'years '||coalesce(2, 0)||' months')::interval;
...
Рейтинг: 0 / 0
Как сделать такой запрос с датами?
    #39511555
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorovПроще всего интервалами воспользоваться:
Код: sql
1.
2.
SELECT now() + INTERVAL '0 years 2 months';
SELECT now() + (coalesce(0, 0)||'years '||coalesce(2, 0)||' months')::interval;

Стоит только убедиться, что недоаддитивность арифметики интервалов YM совпадает с недоаддитивностью mssqlного dateadd.
Код: sql
1.
2.
3.
4.
5.
db=> select d+i1+i2 d1, d+i2+i1 d2
db-> from (select date '2017-01-31' d, interval '1' month i1, interval '2' month i2) t;
         d1          |         d2
---------------------+---------------------
 2017-04-28 00:00:00 | 2017-04-30 00:00:00
...
Рейтинг: 0 / 0
Как сделать такой запрос с датами?
    #39511606
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorovРолг Хупин,

Чтоб ещё знать что этот запрос делает?..

Работу с датой и временем в SQL Server-е так и не осилил…

Мой пробой, не описал:

есть два поля, yearest, monthest - сколько лет и месяцев назад (!) было основано что-то там, и поле modified_established - которое было заполнено датой создания или изменения записи.
Выборка пытается выдать дату основания того чего-то в виде даты.
Я так понял одни е**наты надизайнировали такие поля, другие на кололтили в них данных типа "сейчас на сейчас", т.е. сегодня 10 марта 2010 года, значит фирма была основана 5 лет и 3 месяца назад(!), ну, хоть modified_established заполнилась как 2010-03-10, можно что-то отсчитать в зад .
...
Рейтинг: 0 / 0
Как сделать такой запрос с датами?
    #39511673
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
with const(modified_established, yearest, monthest) as (select '2010-03-10'::date, 5, 3)
select modified_established - make_interval(years=>yearest, months=>monthest) from const;
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как сделать такой запрос с датами?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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