查找格式不同的不同日期之间的差异



我有两个表claims,它有ptid,date_entered(date(,customer_details,它有ptd,first_transaction_date(varchar(。claims表中输入的日期格式为YYYY-MM-DD,customer_details表中的first_transaction_date格式为YYYYMM。

目标:对于索赔表中所有唯一的ptid,我想找出first_transaction_date和date_entered之间的天数差异。我想看看在进入奖励计划之前的一年、两年里,系统中有哪些客户。

我遇到以下问题:1.不同的数据类型2.格式化的差异

这就是我所拥有的:

drop table if exists claims_1;
select a.* ,  b.diag_min, diag_min - first_month_active::date as start_dif
into claims_1
from claims as a
left join customer_details as b on a.ptid = b.ptid
where start_dif >= 0 and end_dif >= 0;

当我尝试使用str_to_date转换数据类型时,我会得到以下错误:

(500310(无效操作:函数str_to_date(字符变化,"未知"(不存在;

select date_format(str_to_date(first_month_active, '%Y%m'), '%Y-%m')from customer_details

在postgresql中,要将字符串转换为日期,请使用to_date:

SELECT to_date('20190103','YYYYMMDD');

所以你需要

SELECT to_date(first_month_active, 'YYYYMM') from customer_details

而且,要将日期格式化为字符串,您需要to_char,所以最终查询将是

SELECT to_char(to_date(first_month_active, 'YYYYMM'), 'YYYY-MM') from customer_details

最新更新