Ir para conteúdo
Fórum Script Brasil
  • 0

Comparação de datas


Silvio luis

Pergunta

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

  • 0

exatamente assim que o meu cliente quer. mas por causa do year estou perdendo os fios de cabelo

meu select esta assim no momento, e não mostra nada

SELECT 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-07

Silvio

Link para o comentário
Compartilhar em outros sites

  • 0

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. :.)

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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 TABELA

select 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. :.)

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...