Pular para o conteúdo principal

Como fazer uma SQL para buscar os períodos de tempo que coincidem com um novo período?

Existem tabelas que controlam períodos de utilização, como aluguéis ou viagens, onde há um campo para a data inicial e outra para a final.

Nestes casos, é muito comum se verificar, ao inserir um novo item, se este coincide com algum já cadastrado. Para isso execute a SQL abaixo adaptada ao seu caso:

select id, dt_hr_saida, dt_hr_chegada from viagem
where dt_hr_chegada > 'dt_hr_saida_novo'
and dt_hr_saida < 'dt_hr_chegada_novo'

Esta SQL irá retornar todos os períodos coincidentes.

Veja que usei o maior e menor, pois as pontas podem coincidir, mas não se cruzar. Se o seu caso não pode nem coincidir então utilize >= e <=.

Se na edição do dado deseja saber se vai bater com outro período execute a SQL abaixo adaptada ao seu caso:

select id, dt_hr_saida, dt_hr_chegada from viagem
where dt_hr_chegada > 'dt_hr_saida_editando'
and dt_hr_saida < 'dt_hr_chegada_editando'
and id <> id_editando

É isso aí....


Comentários

Postagens mais visitadas deste blog

Lista de órgãos emissores de RG

Para quem quiser normalizar os órgãos emissores de RG, aí vai uma lista retirada do site da FGV: SSP - Secretaria de Segurança Pública PM - Polícia Militar PC - Policia Civil CNT - Carteira Nacional de Habilitação DIC - Diretoria de Identificação Civil CTPS - Carteira de Trabaho e Previdência Social FGTS - Fundo de Garantia do Tempo de Serviço IFP - Instituto Félix Pacheco IPF - Instituto Pereira Faustino IML - Instituto Médico-Legal MTE - Ministério do Trabalho e Emprego MMA - Ministério da Marinha MAE - Ministério da Aeronáutica MEX - Ministério do Exército POF - Polícia Federal POM - Polícia Militar SES - Carteira de Estrangeiro SJS - Secretaria da Justiça e Segurança SJTS - Secretaria da Justiça do Trabalho e Segurança ZZZ - Outros (inclusive exterior)

Função php que gera número romano

/**  * Funcao que serve para transformar o numero em romano  * @param integer $integer Recebe algum numero inteiro  * @return string Retorna a string do numero romano  */ function fRomano($integer) {     $table = array('M'=>1000, 'CM'=>900, 'D'=>500, 'CD'=>400, 'C'=>100, 'XC'=>90, 'L'=>50, 'XL'=>40, 'X'=>10, 'IX'=>9, 'V'=>5, 'IV'=>4, 'I'=>1);     $return = '';     while($integer > 0) {         foreach($table as $rom=>$arb) {             if($integer >= $arb) {                 $integer -= $arb;                 $return .= $rom;                 break;             }         }     }     return $return; }