Извлечение записей на основе разницы между двумя временными метками -postgresql - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть следующие столбцы с сотнями тысяч записей

date_for_trx , date_user_creation , order_number ,  email 
1554377107 .      1554377105              on234524 .    321@gmail.com
1554377000 .      1354377107              on876568 .    xyz@gmail.com
1554377105 .      1254377107              on777612 .    123@gmail.com
1554377107 .      1551177107              on123345 .    abc@gmail.com
......            .......                 .......       ........

Мне нужно извлечь электронные письма, где разница между date_for_trx (-) и date_user_creation>> 12 месяцев

Таким образом, это будут электронные письма с датой date_for_trx от 21/03/2019, а date_user_creation от 21.03.2017 или старше

Кто-нибудь может помочь?Спасибо

Я попробовал ответы на другие вопросы здесь, но вполне могу их найти.

То, что я всегда получаю, это вычисление времени между двумя временными метками, но я могу извлечь электронные письма, основываясь на том, что вычисление составляет 12месяцев

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Просто вычтите два значения и сравните результат:

where to_timestamp(date_for_trx) - to_timestamp(date_user_creation) >= interval '12 month'

Обратите внимание, что в приведенном выше предположении date_for_trx больше date_user_creation.Он не обрабатывает отрицательные значения.

0 голосов
/ 04 апреля 2019

В PostgreSQL вы можете взять разницу в годах, умножить на 12 и добавить разницу между частями месяца, которая может быть отрицательной.

SELECT email FROM YOUR_TABLE WHERE ((DATE_PART('year', to_timestamp(date_for_trx)::date) - DATE_PART('year', to_timestamp(date_user_creation)::date)) * 12 +
          (DATE_PART('month', to_timestamp(date_for_trx)::date) - DATE_PART('month', to_timestamp(date_user_creation)::date))) >= 12;
...