- Este tópico contém 8 respostas, 5 vozes e foi atualizado pela última vez 16 anos, 3 meses atrás por leonardufb.
-
AutorPosts
-
26 de outubro de 2008 às 1:49 am #83354leonardufbParticipante
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…
26 de outubro de 2008 às 9:15 am #83356Ricardo Portilho ProniParticipanteSQL> SELECT nom_funcionario FROM funcionarios WHERE dat_aniversario = to_date(SYSDATE, ‘DD/MM’);
26 de outubro de 2008 às 11:06 pm #83359leonardufbParticipanteOlá 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]
27 de outubro de 2008 às 1:40 am #83360Ricardo Portilho ProniParticipanteImaginei que seria um campo DATE. Esse campo é um VARCHAR2 ou CHAR?
27 de outubro de 2008 às 2:52 am #83361DanielBParticipanteSELECT 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 temSELECT nom_funcionario FROM funcionarios WHERE substr(dat_aniversario, 5) = to_char(SYSDATE, ‘MMDD’);
27 de outubro de 2008 às 3:29 pm #83369leonardufbParticipanteOlá 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….
27 de outubro de 2008 às 5:25 pm #83371leo_jfParticipanteFala 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_totalVeja se entendeu o conceito.
[]s27 de outubro de 2008 às 6:26 pm #83372Regis AraujoParticipanteFala 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.
27 de outubro de 2008 às 7:57 pm #83373leonardufbParticipantePessoal,
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>...
-
AutorPosts
- Você deve fazer login para responder a este tópico.