ANIVERSARINATES BANCO FIREBIRD

TRTNCG 15/10/2010 16:43:50
#355184
OLá Pessoal Boa Tarde!

Pessoal gostaria que me esclarecessem como seria por exemplo, tenho um agendad e contados e um campo chamado ANIV onde guardo a data de aniversário do Contato, sendo no formato dd/mm gostaria de um exemplo em SQL que me trouxesse os aniversariates da semana que antecede a data de hoje por exemplo 15/10 e também todos os aniversarintes do mês 10 ou seja OUTUBRO.
WILLVIDAL 15/10/2010 16:56:37
#355186
Resposta escolhida
SQL...

SELECT NOME FROM CLIENTE WHERE EXTRACT(MONTH FROM NASCIMENTO)=[ô]10[ô]

O segredo ai é o comando EXTRACT Seguido de MONTH(from data) DAY(from data) YEAR(from data), com isso vc pode comparar só a parte da data onde interessa, e tbm fazer a consulta da outra pergunta.
RICART 15/10/2010 18:26:37
#355193
Da semana atual:
select distinct nome, aniv from cliente where extract(month from aniv)=10 or extract(week from aniv)=extract(week from current_timestamp)

Se vc quiser da próxima semana:
select distinct nome, aniv from cliente where extract(month from aniv)=10 or extract(week from aniv)=(extract(week from current_timestamp)+1)

Da forma acima só tem centido se vc quiser de um mês diferente do atual. Se vc quiser todos do mês, é só tirar a segunda condição. Se quiser só da semana, é só tirar a primeira condição. Vc pode também colocar uma função para indicar que se a semana do aniv for igual a semana atual, para mostrar na coluna [ô]na semana[ô], do contrário, mostrar [ô]no mês[ô].
TRTNCG 15/10/2010 18:26:49
#355194
O problema e que o campo ANIV no Firebird é no formato DATA e sempre guarda as datas no formato americano mesmo que você salve no padrão dia/mês ele salva no banco Mês-dia dai procurando e tentando sempre da erro no format usado na SQL.
RICART 15/10/2010 18:41:39
#355195
Então há algum erro no seu código. Quando vc for gravar, vc precisa passar no formato yyyy/MM/dd ou dd-MMM-yyyy. Quando vc for ler, o próprio windows se encarregará de trazer formatado na sua consulta. Por outro lado, se vc for fazer algum tratamento via código, precisará considerar no formato americano.

[ô]01-OCT-2010[ô] ou [ô]2010-10-01[ô]. Se vc passar como [ô]01-10-2010[ô] ele vai gravar [ô]10-01-2010[ô].
XXXANGELSXXX 19/10/2010 07:50:03
#355440
Veja so, mesmo no padrao americano, tem como buscar o valor, é so passar o parametro de como ele vai buscar a informacao no banco, exemplo..
[ô]buscar as datas do dia
  
set rs = new adodb.recordset
rs.open [Ô]select data from tabela where data Between [ô][Ô] & Format(date, [Ô]yyyy-mm-dd[Ô]) & [Ô][ô] And [ô][Ô] & Format(date, [Ô]yyyy-mm-dd[Ô]) & [Ô][ô][Ô]
rs.close
set rs=nothing

no codigo acima selecionei o periodo da data de hoje, no padrao americano. com certeza ele vai buscar os dados corretamente.. esse exemplo e no mysql , tanto pq nunca usei fire. ok?
Tópico encerrado , respostas não são mais permitidas