Silvio luis Postado Fevereiro 3, 2010 Denunciar Share Postado Fevereiro 3, 2010 Boa tardetenho que mostrar os aniversariantes, de um determinado periodono banco eu gravo a data de nascimento, tipo smalldatetime e a data no modo normal tipo: 07/04/1978na hora de buscar os aniversarios que ainda vão acontecer eu preciso eliminar o ano. mas não estou conseguindo fazer o select funcionarselect cliente_aniversario from clientes where 2010/monht(cliente_aniversario)/day(cliente_aniversario) >= getdate();não da erro, mas tambem não trabalha certo.Silvio Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Fevereiro 3, 2010 Denunciar Share Postado Fevereiro 3, 2010 não funciona assim??select cliente_aniversario from clientes where month(cliente_aniversario) = month(getdate()) and day(cliente_aniversario) = day(getdate()) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Silvio luis Postado Fevereiro 4, 2010 Autor Denunciar Share Postado Fevereiro 4, 2010 cara, do modo que você passou funciona simmas eu tenho montar ele de modo que :hoje ele mostre todos os aniversario de 4/2/2010 a 4/2/2011amanhã 5/2/2010 a 5/2/2011depois de amanhã 6/2/2010 a 6/2/2011 e assim por dianteessa é a minha dificuldadeSilvio Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 4, 2010 Denunciar Share Postado Fevereiro 4, 2010 Boa tarde Silvio, Pegando os aniversários de hoje até daqui a 1 ano:select cliente_aniversario from clientes where cliente_aniversario between getdate() and dateadd (year, 1, getdate()) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Silvio luis Postado Fevereiro 4, 2010 Autor Denunciar Share Postado Fevereiro 4, 2010 antes mesmo de testar irei fazer outra perguntausuando getdate() seria 05/02/2010mas no banco esta gravado como tipo smalldatetime, e um ex 07/04/1978ele não iria ignorar esse aniversario por causa do ano?Silvio Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Fevereiro 4, 2010 Denunciar Share Postado Fevereiro 4, 2010 mas eu tenho montar ele de modo que :hoje ele mostre todos os aniversario de 4/2/2010 a 4/2/2011amanhã 5/2/2010 a 5/2/2011depois de amanhã 6/2/2010 a 6/2/2011 e assim por diantese for assim ele vai mostrar todos os aniversarios do banco todos os dias. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Silvio luis Postado Fevereiro 5, 2010 Autor Denunciar Share Postado Fevereiro 5, 2010 exatamente assim que o meu cliente quer. mas por causa do year estou perdendo os fios de cabelomeu select esta assim no momento, e não mostra nadaSELECT CLIENTES.cliente_aniversario FROM CLIENTES year(getdate())-month(clientes.cliente_aniversario)-day(clientes.cliente_aniversario)) between getdate() and dateadd (year, 1, getdate()) ORDER BY month(CLIENTES.cliente_aniversario) lembrando que o campo clietne_aniversario é do tipo smalldatetime gravado dessa forma 1978-04-07Silvio Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 5, 2010 Denunciar Share Postado Fevereiro 5, 2010 Bom dia Silvio, Não estou conseguindo te ajudar, pois não estou entendendo o que está querendo. Faz o seguinte: posta algumas datas de aniversário e depois posta o resultado que deseja. Acho que com um exemplo vai ficar mais fácil de entender. :.) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Silvio luis Postado Fevereiro 5, 2010 Autor Denunciar Share Postado Fevereiro 5, 2010 Bom dia,no banco tenho essas datas1983-01-311978-04-072002-08-031937-02-101924-04-012001-03-02as datas que já passaram esse ano não pode mostrar, só as que virão nessa ordem: 1937-02-10, 2001-03-02, 1924-04-01, 1978-04-07, 2002-08-03não sei consegui ser claro agora?Silvio Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 5, 2010 Denunciar Share Postado Fevereiro 5, 2010 Boa tarde Silvio, Agora sim entendi... rs. Fiz um script de teste com uma temporária. Dá uma olhada se é isto mesmo. :.) Se for, só adaptar com os dados da sua base.-- Criação da tabela temporária create table #Datas (data smalldatetime) -- Inserção das informações insert into #Datas values('1983-01-31') insert into #Datas values('1978-04-07') insert into #Datas values('2002-08-03') insert into #Datas values('1937-02-10') insert into #Datas values('1924-04-01') insert into #Datas values('2001-03-02') -- verifica carga na tabela select * from #Datas -- filtra datas e ordena select substring((convert(varchar, data, 112)), 5, 4) as Ordem, data from #Datas where substring((convert(varchar, data, 112)), 5, 4) >= (substring((convert(varchar, getdate(), 112)), 5, 4)) order by Ordem Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Silvio luis Postado Fevereiro 5, 2010 Autor Denunciar Share Postado Fevereiro 5, 2010 Fulvio,aparentemente funcionou, so não mostrou o aniversario aniversario do mes de agosto.mas assim:tem como você me explicar o como você fez, dai talvez eu possa resolver o resto sozinho.a muito obrigadoSilvio Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 5, 2010 Denunciar Share Postado Fevereiro 5, 2010 Boa tarde Silvio, Nos testes que fiz aqui (do script que passei), o aniversário do mês de agosto foi visualizado... Mas vamos lá: - convert(varchar, data, 112) --> conversão da data para string, no formato yymmdd. - substring(ValorConvertido, 5, 4) --> pega a data convertida e retira o ano, deixando mmdd. - Compara as strings. Nesta comparação, como a estrutura está mmdd, dá para filtrar e ordenar por este campo. Vai rodando assim. Ai você vai olhando como o script está sendo montado: select convert(varchar, getdate(), 112) select substring((convert(varchar, getdate(), 112)), 5, 4) Qualquer dúdida, pode postar. :.) Outra coisa: link da sintaxe convert, com os formatos:http://msdn.microsoft.com/pt-br/library/ms187928.aspx Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Silvio luis Postado Fevereiro 8, 2010 Autor Denunciar Share Postado Fevereiro 8, 2010 nessa conversão ele transforma a datatipo 1978/04/07"780407" ?nessa conversão ele transforma a datatipo 1978/04/07"780407" ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 9, 2010 Denunciar Share Postado Fevereiro 9, 2010 Bom dia Silvio, Faça os testes na sua Base de Dados. Para a conversão 112 --> YYYY, 12 --> YY. Ex,:select convert(varchar, CAMPODATA, 112) from TABELAselect convert(varchar, CAMPODATA, 12) from TABELA No exemplo que passei, tive que retirar 4 campos, pois converti para 4 caracteres do ano. você pode converter para 2 campos do ano e retirar 2 caracteres. :.) Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Silvio luis
Boa tarde
tenho que mostrar os aniversariantes, de um determinado periodo
no banco eu gravo a data de nascimento, tipo smalldatetime e a data no modo normal tipo: 07/04/1978
na hora de buscar os aniversarios que ainda vão acontecer eu preciso eliminar o ano. mas não estou conseguindo fazer o select funcionar
select cliente_aniversario from clientes where 2010/monht(cliente_aniversario)/day(cliente_aniversario) >= getdate();
não da erro, mas tambem não trabalha certo.
Silvio
Link para o comentário
Compartilhar em outros sites
13 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.