我遇到日期转换和显示错误的问题。我认为下面的问题就是问题。
我需要记录日期之间的差异并计算它们以了解发票是打开“A”还是下载“B”,但它会返回以下错误。
Conversion failed when converting the varchar value '30/12/' to datatype int.
<pre><code>
SELECT [vl_recebido]
,[vl_pago]
,[vl_original]
,s.[dt_baixa]
,[dt_vencto]
,[dt_rp]
,S.[id_divisao]
,[nro_baixa]
,S.[nm_cliente]
,ISNULL(C.id_cliente, -1) AS id_cliente
,[nro_documento]
,[ds_moeda]
,[cd_cc]
,[cd_t_cta]
,[cd_port]
,[cd_oper]
,[ds_observacao]
,[ds_complemento]
,[nm_resp_baixa]
,[qtd_recibo]
,[qtd_pagto]
,t.[qtd_colaborador]
,t.[vl_meta]
,[flag]
,[bco_sacado]
,[cheque_numero]
,[in_processo]
,isnull(af.id_aging_fatura, 5) as id_aging_fatura
,af.dsc_faixa_aging
,af.qtd_aging
,datediff(d, s.dt_vencto, s.dt_baixa) as qtd_aging_calc
,case when s.dt_baixa is null then 'A' else 'B' end as status_da_fatura
FROM stg_recibo_baixas S
LEFT JOIN dim_cliente C ON C.cod_cliente = S.cod_cliente
AND C.id_divisao = S.id_divisao
INNER JOIN tab_colaborador_baixa t ON t.id_mes = CONVERT(INT, CONVERT(VARCHAR(6), s.dt_baixa, 112))
left join dim_aging_faturas af on af.qtd_aging = (select min(qtd_aging) from dim_aging_faturas a
where a.qtd_aging >= case when datediff(d, s.dt_vencto, case when s.dt_baixa is null then getdate() else convert(datetime, substring(s.dt_baixa, 8, 4) + '-' + substring(s.dt_baixa, 4, 2) +'-'+ substring(s.dt_baixa, 0, 2), 103) end) < 0 then 0 else datediff(d, s.dt_vencto, convert(datetime, substring(s.dt_baixa, 8, 4) + '-' + substring(s.dt_baixa, 4, 2) +'-'+ substring(s.dt_baixa, 0, 2), 103)) end)
</code></pre>