Pular para o conteúdo
  • Este tópico contém 8 respostas, 5 vozes e foi atualizado pela última vez 16 anos, 3 meses atrás por leonardufb.
Visualizando 9 posts - 1 até 9 (de 9 do total)
  • Autor
    Posts
  • #83354
    leonardufb
    Participante

      Olá pessoal, boa noite,

      Gostaria de saber, como dar um SELECT e mostrar os registros de uma tabela baseado em uma data especifica, tipo tenho uma tabela de usuarios, com nome e data de nascimento, e dar um SELECT que mostre apenas os usuarios que fazem aniversario hoje, já pesquisei na net as funcoes EXTRACT, TO_DATE, SYSDATE, mas consegui usar. Até mais e tudo de bom a todos…

      #83356
      Ricardo Portilho Proni
      Participante

        SQL> SELECT nom_funcionario FROM funcionarios WHERE dat_aniversario = to_date(SYSDATE, ‘DD/MM’);

        #83359
        leonardufb
        Participante

          Olá Ricardo, olha execute o SQL que vc postou, mas, não está funcionando, está dando o seguinte erro, “literal does not match format string”, os registros no campo estão no seguinte formato YYYYMMDD, sem barra e sem nenhum caractere especial, tá ligado, tentei removendo a barra, para ver se era isso, mas, apresenta o mesmo erro. Até mais e tudo de bom…[/b]

          #83360
          Ricardo Portilho Proni
          Participante

            Imaginei que seria um campo DATE. Esse campo é um VARCHAR2 ou CHAR?

            #83361
            DanielB
            Participante

              SELECT nom_funcionario FROM funcionarios WHERE to_char(dat_aniversario, ‘DD/MM’) = to_char(SYSDATE, ‘DD/MM’);

              si dat_aniversario es DATE
              si dat_aniversario es varchar e vc lo deixa YYYYMMDD tem

              SELECT nom_funcionario FROM funcionarios WHERE substr(dat_aniversario, 5) = to_char(SYSDATE, ‘MMDD’);

              #83369
              leonardufb
              Participante

                Olá Daniel, o que funfou foi o último SELECT, agora nao entendi o por que de vc usar substr(dat_aniversario, 5), por que o 5 o que ele quer dizer, e desde já muito OBRIGADO A TODOS que participaram….

                #83371
                leo_jf
                Participante

                  Fala Leo,
                  O substr é para você pegar a posição em uma cadeia de caracteres. Você tem, geralmente, posição inicial e length (que é opcional).
                  Exemplo: substr(‘Leonardo’, 1, 3) = Leo
                  substr(‘Leonardo’, 6) = rdo, ou seja, irá pegar a partir da posição 6 até o final do caracter.
                  Aqui no trampo eu uso muito para extrair datas.
                  Exemplo:
                  LPAD (SUBSTR (TO_CHAR (acesso_horas), 1, 4), 4, ‘0’) || ’00’ hr_total

                  Veja se entendeu o conceito.
                  []s

                  #83372
                  Avatar photoRegis Araujo
                  Participante

                    Fala Leo, boa tarde!

                    Sei que estou postando tarde esta resposta, mas só complementando o que já foi passado pelos colegas anteriormente, vou passar abaixo como pegar os valores de cada parte de uma data.

                    SELECT * FROM TABELA WHERE TO_CHAR(CAMPO_DATA, ‘DD’) = TO_CHAR(SYSDATE, ‘DD’); –DIA

                    SELECT * FROM TABELA WHERE TO_CHAR(CAMPO_DATA, ‘MM’) = TO_CHAR(SYSDATE, ‘MM’); — MES

                    SELECT * FROM TABELA WHERE TO_CHAR(CAMPO_DATA, ‘YYYY’) = TO_CHAR(SYSDATE, ‘YYYY’); –ANO

                    SELECT * FROM TABELA WHERE TO_CHAR(CAMPO_DATA, ‘HH24’) = TO_CHAR(SYSDATE, ‘HH24’); –HORA

                    SELECT * FROM TABELA WHERE TO_CHAR(CAMPO_DATA, ‘MI’) = TO_CHAR(SYSDATE, ‘HH24:MI:SS’); –HORA/MINUTO

                    SELECT * FROM TABELA WHERE TO_CHAR(CAMPO_DATA, ‘MI’) = TO_CHAR(SYSDATE, ‘HH24:MI:SS’); –HORA/MINUTO/SEGUNDO

                    Desta maneira, você poderá combinar os valores que quiser, determinando até mesmo períodos de busca, com between.

                    O TO_CHAR em um campo date, serve para você formatar o modo de visualização do conteudo deste campo, onde você poderá visualizar uma data no formato ‘MM/DD/YYYY’ em ‘DD/MM/YYYY’.

                    Ex:

                    Select Sysdate From Dual;
                    10/27/2008 –(mes 10/dia 27/ano 2008)

                    Select To_Char(sysdate, ‘DD/MM/YYYY’) From Dual;
                    27/10/2008 — (dia 27/mes 10/ano 2008)

                    Abraços, espero ter ajudado.

                    #83373
                    leonardufb
                    Participante

                      Pessoal,

                       Meus parabéns a todos, neste fórum vcs realmente metralham agente de informaçao, mais uma vez gostaria de agradecer a todos que me ajudaram, e estarei sempre participando do forum compartilhando meus conhecimentos, até mais e tudo de bom a todos......Quem quiser trocar ideia, ou tirar alguma duvida tambem, meu e-mail e <a href="mailto:leonardufb@gmail.com" />leonardufb@gmail.com</a>...
                      
                    Visualizando 9 posts - 1 até 9 (de 9 do total)
                    • Você deve fazer login para responder a este tópico.
                    plugins premium WordPress