Pular para o conteúdo principal

Funções de data Oracle

 

image

Com o Oracle é possível obter uma série de resultados a partir de uma ou mais datas, como por exemplo verificar o último dia do mês ou verificar a quantidade de meses entre duas datas, então vamos a alguns exemplos:

 

Data atual do sistema: SYSDATE

Remover meses de uma data: ADD_MONTHS(SYSDATE, -1)

Adicionar meses de uma data: ADD_MONTHS(SYSDATE, +1)

Buscar o último dia do mês: LAST_DAY(SYSDATE)

Primeiro dia do mês: TRUNC(SYSDATE, ‘MONTH’)

Quantidade de meses entre duas datas: MONTHS_BETWEEN(SYSDATE, ‘27/07/1982’)

Primeiro dia do ano: TRUNC(SYSDATE, ‘YEAR’)

Dias da semana: DECODE( TO_NUMBER( TO_CHAR          (SYSDATE, ‘D’) )

,1, ‘domingo’

,2, ‘segunda-feira’

,3, ‘terça-feira’

,4, ‘quarta-feira’

,5, ‘quinta-feira’

,6, ‘sexta-feira’

,7,’sábado’

)

Comentários

  1. Ótimo!! Ajudou muito, obrigada.

    ResponderExcluir
  2. Streaming de radio ShoutCast com auto-dj e hospedagem para sites e com melhor custo beneficio da internet so na

    ABNIX.com.br

    Streaming para rádio - 200 ouvintes - Qualidade: 32 kbs - Auto Dj 1 Giga - R$ 10.90

    Os planos Shoutcast vem com AutoDJ, ou seja sua rádio pode ficar 24 horas no ar, além da possibilidade de entrar

    com sua programação ao vivo na hora que desejar.

    Em todos os planos de streaming, você terá gratuitamente 3 meses de hospedagem no PLANO BRONZE de graça sem pagar nada durante 3 meses.

    ATENÇÃO *Cobrimos oferta da Concorrência (sujeito a análise).

    Criação de Sites a Partir de 300 reias.

    WWW.ABNIX.COM.BR

    ResponderExcluir
  3. Muito simples, mas muito funcional. ótima dica. Obrigado

    ResponderExcluir
  4. Dia da semana não é mais fácil:

    SELECT TO_CHAR(SYSDATE,'DAY') FROM DUAL

    ResponderExcluir
  5. e a quantidade de dias entre duas datas, como faz?

    ResponderExcluir
  6. Olá Anônimo, você pode fazer data - data:

    select (sysdate - sysdate+1) from dual;

    ResponderExcluir
  7. Ola Boa tarde, gostaria de saber se é possível descobrir qual o primeiro e sétimo dia da semana. Exemplo:

    01/01/2017 = domingo then 1º domingo
    02/01/2017 = segunda-feira then 1º segunda
    03/01/2017 = terça-feira then 1º terça

    08/01/2017 = domingo then 2º domingo
    09/01/2017 = segunda-feira then 2º segunda

    Assim por mês.... todos as anos.

    ResponderExcluir
    Respostas
    1. Este comentário foi removido pelo autor.

      Excluir
    2. select replace(to_char(sysdate,'day'),'-feira') from dual
      Troque sysdate pela data desejada.

      Excluir
  8. Como faço para trazer o nome do MÊS, não sendo o mes atual que estamos, por exemplo para um relatorio, trazer o nome do mes do lado da data.

    ResponderExcluir
    Respostas
    1. Olá Anônimo! Não sei se entendi bem sua dúvida, mas para mostrar o nome do "próximo" mês você poderia adicionar um mês ao mês atual com o "ADD_MONTHS" e ai mostrar o nome desse mês com o "TO_CHAR", ficaria algo como: "TO_CHAR( ADD_MONTHS( SYSDATE, 1 ) , ‘MONTH’ )"

      Excluir

Postar um comentário

Obrigado por Participar do programero, fique a vontade para agradecer, retificar, perguntar ou sugerir.

Mais visitadas

Funções de Data e Hora (Delphi)

É muito comum nos depararmos no dia a dia com a necessidade de manipular datas e horas, seja para um calculo de permanência, dias de atraso enfim, é praticamente escapar de alguma situação que necessite desse tipo de controle. Assim como a necessidade e se utilizar algum recurso para manipular as datas e horas de alguma maneira e freqüente, as duvidas de como o faze-lo também é, basta um breve olhar em qualquer fórum especializado e lá está, alguma duvida relacionada, por isso decidi falar um pouco sobre uma unit muito poderosa chamada DateUtils para a manipulação de data e hora, com um grande numero de métodos e classes que facilitam a vida de qualquer um. Alguns exemplos: CompareDate(constA, B: TDateTime): TValueRelationship; Compara apenas a data de dois valores (do tipo TDateTime) retornando: LessThanValue O primeiro valor é menor que o segundo EqualsValue Os valores são iguais GreaterThanValue O primeiro valor é maior que o segundo CompareDateTime(const A, B: TD

Manipular arquivos com PL/SQL (Oracle)

O bom e velho arquivo, é impressionante como lidamos com seus vários tipos durante todos os dias, bom hoje vamos mostrar um jeito simples de se escrever e ler arquivos apenas com a codificação nativa do Oracle. A primeira coisa a fazer é criar um diretório válido configurado no Oracle, e permissões de acesso a esse diretório para o usuário de banco onde faremos o exemplo, sendo assim suponhamos que nosso usuário de banco se chame programero, e nosso diretório real esteja em c:\programero, então logado como SYSTEM devemos executar os seguintes comandos: 1: -- cria diretorio 2: create or replace directory DIR_PROGRAMERO as ' C:\PROGRAMERO '; 3: -- concede permissão de escrita e leitura para nosso usuário 4: grant read , write on directory DIR_PROGRAMERO to PROGRAMERO; Para escrever, basicamente precisamos apenas saber onde esse arquivo ficará, no nosso caso no diretório criado acima, segue o código de escrita: 1: declare 2: -- nosso handler 3: v_a