🧚 Escute! O Beekeeper Studio é uma GUI de banco de dados rápida, moderna e open source Baixar
9 de setembro de 2024 Por Matthew Rathbone

Identificando dias úteis com a função TO_CHAR() do Oracle

O exemplo a seguir mostra como usar TO_CHAR() para retornar apenas as linhas em que a data cai em um dia útil.

SELECT order_id, order_date
FROM orders
WHERE TO_CHAR(order_date, 'DY') NOT IN ('SAT', 'SUN');

Saída esperada:

ORDER_ID | ORDER_DATE
---------|------------
1001     | 04-SEP-2023
1002     | 05-SEP-2023
1005     | 06-SEP-2023
1010     | 07-SEP-2023

Nesta consulta:

  • TO_CHAR(order_date, 'DY') extrai o nome abreviado do dia da coluna order_date.
  • A cláusula NOT IN ('SAT', 'SUN') exclui todas as linhas em que o dia é sábado ou domingo.

Trabalhando com nomes completos dos dias

Se o seu banco de dados estiver configurado com um locale em que os nomes abreviados dos dias são diferentes, ou se você preferir trabalhar com os nomes completos, pode modificar a consulta assim:

SELECT employee_id, work_date
FROM employee_schedule
WHERE TO_CHAR(work_date, 'DAY') NOT IN ('SATURDAY', 'SUNDAY');

Saída esperada:

EMPLOYEE_ID | WORK_DATE
------------|-----------
200         | 01-SEP-2023
201         | 02-SEP-2023
202         | 03-SEP-2023

Filtrando dias úteis entre duas datas

Muitas vezes, você vai querer buscar registros entre duas datas, mas apenas em dias úteis. Veja como estender a lógica para fazer isso.

Exemplo de consulta: selecionando dias úteis entre duas datas

SELECT invoice_id, invoice_date
FROM invoices
WHERE invoice_date BETWEEN TO_DATE('2023-09-01', 'YYYY-MM-DD') 
                       AND TO_DATE('2023-09-10', 'YYYY-MM-DD')
AND TO_CHAR(invoice_date, 'DY') NOT IN ('SAT', 'SUN');

Saída esperada:

INVOICE_ID | INVOICE_DATE
-----------|--------------
3001       | 01-SEP-2023
3005       | 04-SEP-2023
3007       | 05-SEP-2023
3010       | 06-SEP-2023

Lidando com diferentes idiomas e locales

O Oracle pode exibir os nomes dos dias de acordo com as configurações de NLS (National Language Support) da sua sessão. Por exemplo, se a sua sessão estiver configurada para um idioma diferente do inglês, abreviações como ‘MON’, ‘TUE’ podem ser diferentes. Você pode verificar as configurações atuais executando:

SELECT * FROM NLS_SESSION_PARAMETERS WHERE PARAMETER = 'NLS_TERRITORY';

Se necessário, você pode sobrescrever essas configurações no nível da sessão para garantir resultados consistentes:

ALTER SESSION SET NLS_TERRITORY = 'AMERICA';

Isso define o território como ‘AMERICA’, garantindo que nomes de dias como ‘MON’, ‘TUE’ etc. sejam usados.

Usando a função NEXT_DAY()

Às vezes, você pode querer calcular o próximo dia da semana a partir de uma data. A função NEXT_DAY() do Oracle ajuda a encontrar a próxima ocorrência de um dia da semana específico.

Exemplo de consulta: encontrando o próximo dia da semana

SELECT NEXT_DAY(SYSDATE, 'MONDAY') AS next_monday
FROM dual;

Saída esperada:

NEXT_MONDAY
------------
11-SEP-2023

Neste caso, NEXT_DAY(SYSDATE, 'MONDAY') retorna a próxima ‘segunda-feira’ após a data atual.

Conclusão

Filtrar dias úteis no Oracle SQL é uma necessidade comum em muitas aplicações. Usando a função TO_CHAR() para extrair o dia da semana e excluir os fins de semana, você pode trabalhar apenas com dias úteis. Em cenários mais complexos, funções como NEXT_DAY() e intervalos de datas podem ser combinados para criar consultas mais sofisticadas.

Outros artigos que você pode gostar:

Beekeeper Studio é um cliente de banco de dados gratuito e open source

A melhor ferramenta de consultas e edição de SQL que já usei. Tem tudo o que preciso para gerenciar meu banco de dados. - ⭐⭐⭐⭐⭐ Mit

O Beekeeper Studio é rápido, intuitivo e fácil de usar. Ele suporta vários bancos de dados e funciona muito bem no Windows, Mac e Linux.

A versão do Beekeeper para Linux tem 100% dos recursos, sem atalhos e sem concessões.

O que os usuários dizem sobre o Beekeeper Studio

★★★★★
"O Beekeeper Studio substituiu completamente meu antigo fluxo de trabalho com SQL. É rápido, intuitivo e torna o trabalho com banco de dados agradável de novo."
— Alex K., desenvolvedor de banco de dados
★★★★★
"Já testei muitas GUIs de banco de dados, mas o Beekeeper encontra o equilíbrio perfeito entre recursos e simplicidade. Simplesmente funciona."
— Sarah M., engenheira full stack

Pronto para melhorar seu fluxo de trabalho com SQL?

download Baixar grátis