You are currently viewing Problemas com datetime no Dynamics 365 CRM

Problemas com datetime no Dynamics 365 CRM

Estava trabalhando em um projeto de dados envolvendo o Dynamics 365 CRM como principal fonte de dados para os relatórios no Power BI.

Depois de subir o primeiro relatório que analisava atendimentos, recebi alguns chamados reclamando sobre a diferença de quantidade de atendimentos no relatório do Power BI e da localização avançada no Dynamics 365 CRM.

Minha estrutura de dados como fonte o Dynamics 365 CRM

A princípio na minha estrutura eu tenho um Data Factory rodando alguns pipelines a cada 2 horas para obter os dados do Dynamics 365 CRM. Inserindo esses dados em um Banco Azure MySQL e posteriormente possuo o Power BI conectado para criação dos relatórios.

Minha estrutura de dados

O principal problema

O principal causador desse problema é a maneira que o Dynamics trata os datetimes. Onde ele grava esse tipo de dado no banco de dados em padrão UTC (Link da Documentação). Quando eu verificava os dados via SQL no dynamics os dados batiam com meu banco MySQL (um artigo antigo meu ensinando a fazer isso) , mas na exibição e na localização avançada ele converte para a configuração regional do CRM, que no meu caso era Brasil, ou seja, ele converte o tempo em UTC -3 que é o fuso horário do Brasil.

Sendo assim quando ele grava um datetime por exemplo ‘2022-05-20 01:00:00’ em UTC no banco na exibição é descontado 3 horas, ficando ‘2022-05-19 22:00:00’, ou seja, ele acaba ‘voltando’ o dia, em meu relatório eu não tinha me atendado a isso, assim eu apresentava os dados em UTC e no CRM o usuário enxergava os dados em UTC -3, onde os dados de atendimento nunca acabavam batendo.

A resolução

Assim a resolução foi a edição do script de cópia de dados do CRM para o meu Banco MySQL.
Onde eu realizo a conversão para UTC -3, com o script SQL abaixo:

CONVERT_TZ(coluna_de_datetime ,'+00:00','-3:00')

Assim a função CONVERT_TZ realiza a conversão de fuso horário conforme parametrização, no meu caso convertendo de UTC para UTC -3.

Lembrando que essa função é nativa do MySQL.

Deixe um comentário