我在以下几列中有数十万个条目
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个月的计算来提取电子邮件
答案 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
。它不处理负值。