Como Usar Between Entre Duas Colunas de Data no Laravel
Paulo Bolsanello·24 Jan 2025·2 min de leitura
Trabalhar com intervalos de datas é uma necessidade comum em aplicações web, especialmente em sistemas que lidam com eventos, agendamentos ou relatórios. Neste artigo, vamos explorar como usar o operador BETWEEN entre duas colunas de data no Laravel, tanto com o Eloquent quanto com o Query Builder.
O Problema
Imagine que você possui uma tabela eventos com as colunas data_inicio e data_fim. Você quer consultar todos os eventos que acontecem em uma data específica, como 2024-11-10. Em SQL, a consulta seria algo como:
SELECT *
FROM eventos
WHERE '2024-11-10' BETWEEN data_inicio AND data_fim;
No Laravel, podemos traduzir essa lógica de forma eficiente usando os recursos do framework.
Usando o Eloquent
O Eloquent é a forma mais elegante e intuitiva de trabalhar com o banco de dados no Laravel. Para aplicar o BETWEEN, usamos a seguinte abordagem:
Exemplo:
use App\Models\Evento;
$dataConsulta = '2024-11-10';
$eventos = Evento::whereBetween($dataConsulta, ['data_inicio', 'data_fim'])->get();
Explicação:
whereBetween() é usado para especificar o intervalo de comparação.
Passamos a data a ser consultada como primeiro parâmetro.
As colunas data_inicio e data_fim delimitam o intervalo.
No entanto, o whereBetween() não funciona diretamente para comparar colunas no Eloquent. Nesse caso, precisamos usar DB::raw.
Usando o Query Builder
O Query Builder é ideal para casos que exigem maior flexibilidade, como comparações entre colunas. Aqui está como podemos traduzir o BETWEEN:
Exemplo:
use Illuminate\Support\Facades\DB;
$dataConsulta = '2024-11-10';
$eventos = DB::table('eventos')
->whereRaw('? BETWEEN data_inicio AND data_fim', [$dataConsulta])
->get();
Explicação:
whereRaw permite inserir expressões SQL personalizadas.
O uso de ? e do array [$dataConsulta] protege contra SQL Injection.
Exemplos Adicionais
Consulta para verificar se data_fim está entre data_inicio e outra coluna, como data_limite:
$eventos = DB::table('eventos')
->whereRaw('data_fim BETWEEN data_inicio AND data_limite')
->get();
Usando Operadores para maior controle
Se preferir, você pode usar operadores lógicos em vez de BETWEEN:
Consultar dados usando BETWEEN entre colunas é uma tarefa simples no Laravel, tanto com o Eloquent quanto com o Query Builder. O uso de whereRaw oferece a flexibilidade necessária para comparações entre colunas, enquanto operadores como >= e <= tornam sua consulta mais legível e direta.
Escolha a abordagem que melhor se adapta ao seu cenário e comece a explorar os intervalos de datas no Laravel de forma eficiente!
O Git é uma ferramenta poderosa para controle de versão, amplamente utilizada por desenvolvedores. Ao trabalhar com repositórios Git, é importante ficar atualizado com as alterações remotas, mas nem sempre queremos…
Recentemente me deparei com um problema curioso que ocorre no GIT principalmente enquanto escrevemos código em modo root e depois fazemos o push para os repositórios que faz com que as permissões(CHMOD) de arquivos e…