Size: a a a

pgsql – PostgreSQL

2021 February 05

OK

Oleg Kuzmenko in pgsql – PostgreSQL
Alex Yu
А в чем суть такого преобразования - отрезать год?
Суть максимально простая — необходимость часто выбирать чуваков, у которых ДР через N дней или был N дней назад. Для этого мне как раз нужно отрезать год и искать примерно так:
WHERE to_char(birthday, 'MM-DD') = '02-05'
источник

SB

Sergey Bezrukov in pgsql – PostgreSQL
Oleg Kuzmenko
Суть максимально простая — необходимость часто выбирать чуваков, у которых ДР через N дней или был N дней назад. Для этого мне как раз нужно отрезать год и искать примерно так:
WHERE to_char(birthday, 'MM-DD') = '02-05'
extract(doy from birthdate) = extract (doy from desired_date) - не так?
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Oleg Kuzmenko
Суть максимально простая — необходимость часто выбирать чуваков, у которых ДР через N дней или был N дней назад. Для этого мне как раз нужно отрезать год и искать примерно так:
WHERE to_char(birthday, 'MM-DD') = '02-05'
А я бы оставлял дату как есть и проверял WHERE birthday = '02-05'::date синтаксис наверняка ошибочный, но идея, я думаю, понятна.
источник

OK

Oleg Kuzmenko in pgsql – PostgreSQL
Sergey Bezrukov
extract(doy from birthdate) = extract (doy from desired_date) - не так?
Високосный год не станет помехой?
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
А кто-нибудь знает в какой временной зоне указаны временные интервалы на FOSDEM? пишут - доклады начинаются завтра в 10, а в какой временной зоне не показывают.
источник

SB

Sergey Bezrukov in pgsql – PostgreSQL
Oleg Kuzmenko
Високосный год не станет помехой?
надо потестить, возможно придётся учесть
источник

AY

Alex Yu in pgsql – PostgreSQL
Oleg Kuzmenko
Суть максимально простая — необходимость часто выбирать чуваков, у которых ДР через N дней или был N дней назад. Для этого мне как раз нужно отрезать год и искать примерно так:
WHERE to_char(birthday, 'MM-DD') = '02-05'
SELECT substring(birthday::date::TEXT, 6, 6)

Но я полагаю, что Вам нужен просто индекс по дате
источник

OK

Oleg Kuzmenko in pgsql – PostgreSQL
Alex Yu
SELECT substring(birthday::date::TEXT, 6, 6)

Но я полагаю, что Вам нужен просто индекс по дате
Мне кажется, что если бы удалось поставить индекс по дню и месяцу, то было бы быстрее, чем просто индекс по дате
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Oleg Kuzmenko
Суть максимально простая — необходимость часто выбирать чуваков, у которых ДР через N дней или был N дней назад. Для этого мне как раз нужно отрезать год и искать примерно так:
WHERE to_char(birthday, 'MM-DD') = '02-05'
Насколько я помню весь софт, который ищет ДР, он ещё и возраст указывает. Т.е. год тоже используется.
источник

OK

Oleg Kuzmenko in pgsql – PostgreSQL
Михаил Шурутов
Насколько я помню весь софт, который ищет ДР, он ещё и возраст указывает. Т.е. год тоже используется.
Мой софт — это автоматизированный инструмент для маркетинговых кампаний. Одна из настроек этой кампании может выглядеть примерно как "отправь чувакам, у которых ДР был 3 дня назад, такое-то письмо"
источник

am

a m in pgsql – PostgreSQL
Oleg Kuzmenko
Даже так пытался извращаться:
concat(lpad(cast(extract(month from birthday) as text), 2, '0'), '-', lpad(cast(extract(day from birthday) as text), 2, '0'))
Сделайте триггер, чтобы отдельную колонку заполнял. Чего мучаться.
источник

OK

Oleg Kuzmenko in pgsql – PostgreSQL
a m
Сделайте триггер, чтобы отдельную колонку заполнял. Чего мучаться.
Это тоже опция, спасибо
источник

RY

Ruslan515 Y in pgsql – PostgreSQL
Всем добрый вечер. Пытаюь к Postgre подлючится через ssh. Нашел такой пример. ssh  тунель создается нормально, но к post не могу подлючится. Кто может подсказать, что не так делаю?
источник

AY

Alex Yu in pgsql – PostgreSQL
Я бы двинулся все-таки в арифметику с датами

Что-то типа

WITH D as (
   SELECT '19860201'::date AS birthday
)
SELECT
       DATE_PART('year', AGE(NOW(), birthday)) AS years,
       birthday + DATE_PART('year', AGE(NOW(), birthday)) * '1 year'::INTERVAL AS mmdd,
       (NOW() - (birthday + DATE_PART('year', AGE(NOW(), birthday)) * '1 year'::INTERVAL)) BETWEEN '-30 day'::INTERVAL AND '30 day'::Interval
   FROM D
источник

am

a m in pgsql – PostgreSQL
Alex Yu
Я бы двинулся все-таки в арифметику с датами

Что-то типа

WITH D as (
   SELECT '19860201'::date AS birthday
)
SELECT
       DATE_PART('year', AGE(NOW(), birthday)) AS years,
       birthday + DATE_PART('year', AGE(NOW(), birthday)) * '1 year'::INTERVAL AS mmdd,
       (NOW() - (birthday + DATE_PART('year', AGE(NOW(), birthday)) * '1 year'::INTERVAL)) BETWEEN '-30 day'::INTERVAL AND '30 day'::Interval
   FROM D
no god no please no
источник

am

a m in pgsql – PostgreSQL
Ruslan515 Y
Всем добрый вечер. Пытаюь к Postgre подлючится через ssh. Нашел такой пример. ssh  тунель создается нормально, но к post не могу подлючится. Кто может подсказать, что не так делаю?
Секретное сообщение об ошибке — в студию.
источник

RY

Ruslan515 Y in pgsql – PostgreSQL
a m
Секретное сообщение об ошибке — в студию.
жду))
источник

AY

Alex Yu in pgsql – PostgreSQL
a m
no god no please no
Более развернуто можно?

Я имею в виду, что я не стал бы связываться с to_char , ::text итд
а работал бы с нормальным полем даты
и с интервалами
источник

VK

Vitally Klimenko in pgsql – PostgreSQL
Ruslan515 Y
Всем добрый вечер. Пытаюь к Postgre подлючится через ssh. Нашел такой пример. ssh  тунель создается нормально, но к post не могу подлючится. Кто может подсказать, что не так делаю?
привет! покажи pg_hba.conf
источник

am

a m in pgsql – PostgreSQL
Ruslan515 Y
жду))
Таймаут называется.
Вы уверены вообще, что ssh работает?
Попробуйте сначала ssh -L 65432:localhost:5432 remote_user@remote_host и посмотрите, отвечает ли порт.
источник