Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save thiagosperandio/f68fc1ddca681fcb9e079708477c1462 to your computer and use it in GitHub Desktop.
Save thiagosperandio/f68fc1ddca681fcb9e079708477c1462 to your computer and use it in GitHub Desktop.
Vinculações - análise de concomitância:
Regra: dado um elemento de apelido "c", pesquiso na base se existe um "cx" concomitante: [
and ( c.inicio <= cx.fim or cx.fim is null )
and ( c.fim is null or c.fim >= cx.inicio )
]
Obs.: Dependendo da análise, podem querer adicionar um "[ and c.id <> cx.id ]" para não considerar o mesmo elemento como concomitante. Mas tem caso que eu não posso usar isso.
Testes: Períodos concomitantes
01/02/2020 a 31/03/2021 - contrato
01/03/2020 a 31/08/2020 - outro contrato
01/02/2020 <= 31/08/2020 ? sim
31/03/2021 >= 01/03/2020 ? sim
01/03/2020 a 31/08/2020 - contrato
01/02/2020 a 31/03/2021 - outro contrato
01/03/2020 <= 31/03/2021 ? sim
31/08/2020 >= 01/02/2020 ? sim
01/03/2020 a 31/03/2021 - contrato
01/02/2020 a 31/08/2020 - outro contrato
01/03/2020 <= 31/08/2020 ? sim
31/03/2021 >= 01/02/2020 ? sim
01/02/2020 a 31/08/2020 - contrato
01/03/2020 a 31/03/2021 - outro contrato
01/02/2020 <= 31/03/2021 ? sim
31/08/2020 >= 01/03/2020 ? sim
Prova real: Períodos não concomitantes
01/02/2019 a 28/02/2020 - contrato
01/03/2020 a 31/03/2021 - outro contrato
01/02/2019 <= 31/03/2021 ? sim
28/02/2020 >= 01/03/2020 ? não!
01/03/2020 a 31/03/2021 - contrato
01/02/2019 a 28/02/2020 - outro contrato
01/03/2020 <= 28/02/2020 ? não!
31/03/2021 >= 01/02/2019 ? sim
@thiagosperandio
Copy link
Author

Bom dia! A alguns anos eu fiz essa lógica pra encontrar concomitâncias e hoje estou precisando de novo. Como ela é confusa pra quem lê, eu fiz uns testes de mesa porque, sinceramente... eu buguei!

Aí aproveito pra passar pra vocês, pois as vezes vcs devem precisar disso...

A parte legal: resolve em 2 linhas a análise de concomitância.

  • Concomitância: dois períodos tem interseção entre si. Ou seja, um período pode estar passando dentro de outro período. Muitas vezes não queremos isso.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment