根据两个时间戳之间的差异提取记录-postgresql

时间:2019-04-04 11:35:49

标签: database postgresql timestamp extract

我在以下几列中有数十万个条目

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/2018或更早

任何人都可以帮忙吗? 谢谢

我在这里尝试过其他问题的答案,但是可以到达那里。

我总是得到两个时间戳之间的时间计算,但是可以基于12个月的计算来提取电子邮件

2 个答案:

答案 0 :(得分:0)

在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;

答案 1 :(得分:0)

只需将两个值相减并比较结果:

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

请注意,以上假设date_for_trx大于date_user_creation。它不处理负值。