Atualize hoje para o Scriptcase 9 e ganhe 35% de desconto! Atualize hoje para o Scriptcase 9 e ganhe 35% de desconto! COMPRAR AGORA!

Autor Tópico: Filtrar por DATA ATUAL vs DD/MM  (Lida 138 vezes)

cidadejr

  • Novato
  • *
  • Mensagens: 18
Filtrar por DATA ATUAL vs DD/MM
« Online: Julho 05, 2017, 05:19:27 pm »
Pessoal, meu cadastro de clientes possui o campo indicando a profissão de cada um e a data de nascimento e eu gostaria de parabenizá-los todos os anos. Alguém poderia me dar algumas dicas de como gravar a data comemorativa? (pois neste caso a data não estaria vinculada a um ano específico)

A outra questão é, como eu poderia fazer o filtro ignorando o ano?

Obrigado.

Cássio Lacerda

  • Intermediário
  • ***
  • Mensagens: 153
  • Força e honra!!!
    • Brain Legacy
    • Email
Re:Filtrar por DATA ATUAL vs DD/MM
« Responder #1 Online: Julho 06, 2017, 06:10:31 am »
Ola,

Existe muitas formas de fazer isto, vamos a algumas

1) Opcao 1 - Ano atual:
Assumir o ano atual entao qualquer dia e mes que o usuario digitar voce salva com o ano atual.
No teu relatorio ou lista de aniverariantes voce so filtra a data mes/dia


2) Opcao 2 - String
Uma outra forma que eu ja fiz isto foi salvar em uma string 4 ou 5 (ja fiz os dois)
mm/dd ou mmdd e voce filtra esta string quando for fazer a tua lista


3) Opcao campo birthmonth e birthday
Outra opcao seria criar dois campos um para os mes MM e outro para o dia e salvar separado no banco e facilmente filtrar.


Cada uma das solucoes tem sua vantagem e desvantagens


Escolha uma e manda bala.

Espero ter ajudado.

CL
Cássio Lacerda

cidadejr

  • Novato
  • *
  • Mensagens: 18
Re:Filtrar por DATA ATUAL vs DD/MM
« Responder #2 Online: Julho 06, 2017, 11:34:33 am »
Obrigado pela resposta.

Fuçando bastante eu achei um SQL bem interessante:

select  nome, telefone, celular, endereco from pessoa
WHERE
    (month(datanasc) = month(now()) and day(datanasc) = (day(now()))+0) or
    (month(datanasc) = month(now()) and day(datanasc) = (day(now()))+1) or
    (month(datanasc) = month(now()) and day(datanasc) = (day(now()))+2) or
    (month(datanasc) = month(now()) and day(datanasc) = (day(now()))+3) or
    (month(datanasc) = month(now()) and day(datanasc) = (day(now()))+4) or
    (month(datanasc) = month(now()) and day(datanasc) = (day(now()))+5) or
    (month(datanasc) = month(now()) and day(datanasc) = (day(now()))+6)
    order by day(datanasc) asc

Quanto à questão do SQL, está resolvido. Porém, minha dúvida agora é como colocar no filtro o mês e dia de referência [ month(now) ou (day(now()))+n. ]. Ou seja, como eu poderia relacionar as opções do filtro com o código SQL.

Obrigado.


Haroldo

  • Expert
  • *****
  • Mensagens: 7258
  • Conhecimento diminui limitações.△TFA△
    • InfinitusWeb Software de Gestãol/Gestão ITIL/Consultoria Scriptcase
Re:Filtrar por DATA ATUAL vs DD/MM
« Responder #3 Online: Julho 07, 2017, 11:38:34 am »
select year(datanasc) as ano, month(datanasc) as mes,  day(datanasc) as dia, ... from tabela


os campos ano, mês e dia estarão disponíveis no filtro