SQL - Aniversariantes do mês - Como comparar data do sistema
ola, meu nome é Airton
estou estudando SQL e tenho que fazer um relatorio em SQL no Delphi utilizando uma Query (Aniversariantes do DIA comparando com a data do sistema) e nao tenho muita experiencia no assunto, por isso te peço uma ajuda se for possivel.
estou usando o codigo;
begin
with query1 do
begin
Close;
SQL.Clear;
SQL.add(´SELECT DISTINCT nome, datanasc from Alunos.db´);
SQL.add(´WHERE EXTRACT(MONTH FROM datanasc) = 1´);
Open;
end;
end;
quero substituir o nº 1 que representa o mes de JANEIRO pelo mes da data do sistema.
estou estudando SQL e tenho que fazer um relatorio em SQL no Delphi utilizando uma Query (Aniversariantes do DIA comparando com a data do sistema) e nao tenho muita experiencia no assunto, por isso te peço uma ajuda se for possivel.
estou usando o codigo;
begin
with query1 do
begin
Close;
SQL.Clear;
SQL.add(´SELECT DISTINCT nome, datanasc from Alunos.db´);
SQL.add(´WHERE EXTRACT(MONTH FROM datanasc) = 1´);
Open;
end;
end;
quero substituir o nº 1 que representa o mes de JANEIRO pelo mes da data do sistema.
Airtao
Curtidas 0
Respostas
Ltres
02/02/2004
Cara usa o decodedate
procedure TForm1.Button1Click(Sender: TObject); var Year, Mounth, Day: Word; begin DecodeDate(Date, Year, Mounth, Day); showmessage(inttostr(Mounth)) end;
GOSTEI 0
Ari
02/02/2004
Fera Caso a Dica acima não ficou clara, esta aqui esta no FAQ do Site do FireBase
Como obter a lista de aniversariantes do dia ?
Supondo uma tabela chamada CLIENTES que contém o campo ANIVERSARIO do tipo DATE ou TIMESTAMP (dialeto 3) e que deseja-se recuperar os aniversariantes de um determinado dia/mês (não importa o ano). Para fazer isso podemos utilizar a função EXTRACT da seguinte forma:
select c.*
from clientes c
where (extract (day from c.aniversario) = :dia_desejado)
and (extract (month from c.aniversario) = :mes_desejado);
dia_desejado e mes_desejado são parâmetros do tipo inteiro e que devem conter o dia (1-31) e o mês (1-12) desejados.
Como obter a lista de aniversariantes do dia ?
Supondo uma tabela chamada CLIENTES que contém o campo ANIVERSARIO do tipo DATE ou TIMESTAMP (dialeto 3) e que deseja-se recuperar os aniversariantes de um determinado dia/mês (não importa o ano). Para fazer isso podemos utilizar a função EXTRACT da seguinte forma:
select c.*
from clientes c
where (extract (day from c.aniversario) = :dia_desejado)
and (extract (month from c.aniversario) = :mes_desejado);
dia_desejado e mes_desejado são parâmetros do tipo inteiro e que devem conter o dia (1-31) e o mês (1-12) desejados.
GOSTEI 0
Aroldo Zanela
02/02/2004
Colega,
Adicione DateUtils na lista de uses da Form:
MonthOf é uma função da unit DateUtils que obtem o mês de uma data passada por valor no parâmetro ´mes´, no caso, a data do sistema operacional que é retornada pela função Date.
Adicione DateUtils na lista de uses da Form:
begin with query1 do begin Close; SQL.Clear; SQL.add(´SELECT DISTINCT nome, datanasc from Alunos.db´); SQL.add(´WHERE EXTRACT(MONTH FROM datanasc) = :mes´); // Altere aqui ParamByName(´mes´).Value := MonthOf(Date); // Adicione esta linha Open; end; end;
MonthOf é uma função da unit DateUtils que obtem o mês de uma data passada por valor no parâmetro ´mes´, no caso, a data do sistema operacional que é retornada pela função Date.
GOSTEI 0