Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
nildglan Colaborador


Registrado: Sábado, 16 de Agosto de 2008 Mensagens: 1564 Localização: Goianésia do Pará
|
Enviada: Qui Dez 08, 2016 9:51 am Assunto: Pegar todas as data a partir de uma data firebird[Resolvido] |
|
|
Pessoal alguém tem stored procedure que posso pegar todas as data a partir da data informada até os dia atual exemplo:
digamos que o vencimento foi 30/01/2015
então nessa estored procedure gerasse aos seguintes registros
28/02/2015
30/03/2015
30/04/2015
30/05/2015
30/06/2015
e etc até no mês atual?
Editado pela última vez por nildglan em Sex Dez 09, 2016 2:32 pm, num total de 1 vez |
|
Voltar ao Topo |
|
 |
anderbelluno Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1030 Localização: Cianorte-PR
|
Enviada: Qui Dez 08, 2016 10:59 am Assunto: |
|
|
Não poderia ser uma função no delphi mesmo?
se vc declarar DateUtils e usar o IncMonth talvez vc consiga chegar onde quer. |
|
Voltar ao Topo |
|
 |
nildglan Colaborador


Registrado: Sábado, 16 de Agosto de 2008 Mensagens: 1564 Localização: Goianésia do Pará
|
Enviada: Qui Dez 08, 2016 11:14 am Assunto: |
|
|
tem uma stored procedure no firebird tem que ser nele,
o mais importante dessa função é que pegue todos os meses sem passar nem hum pra fazer o calculo correto os dias não importa |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Dez 08, 2016 8:02 pm Assunto: |
|
|
Boa noite,
Experimente fazer uns testes para ver se é obtido o resultado esperado:
Código: | SET TERM ^ ;
CREATE OR ALTER PROCEDURE USP_RETORNA_DATAS (
dataref date)
returns (
datanova date)
as
declare variable i integer;
begin
I = 1;
WHILE (DATEDIFF(MONTH, DATEADD(MONTH, I, DATAREF), CURRENT_TIMESTAMP) >= 0) DO
BEGIN
datanova = DATEADD(MONTH, I, DATAREF);
I = I + 1;
suspend;
END
end^
SET TERM ; ^ |
Espero que ajude
Editado pela última vez por imex em Ter Mar 07, 2023 5:25 pm, num total de 1 vez |
|
Voltar ao Topo |
|
 |
nildglan Colaborador


Registrado: Sábado, 16 de Agosto de 2008 Mensagens: 1564 Localização: Goianésia do Pará
|
Enviada: Sex Dez 09, 2016 10:41 am Assunto: |
|
|
imex quase deu certo cara só tem dois detalhes que o primeiro mês não entrou e deveria entrar
exemplo
eu coloquei como parâmetro 30/01/2016
então a primeira deveria entrar ficaria assim
30/01/2016
29/02/2016
30/03/2016
etc...
e o outro exemplo é o seguinte esse mês nós não estamos no dia 30 ainda então entraria até a data atual
ou seja 09/12/2016
imex porque isso é para calcular juros atrasados entendeu
então só faltou esses detalhes, como faria? |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Dez 09, 2016 12:43 pm Assunto: |
|
|
Experimente dessa forma:
Código: | CREATE OR ALTER PROCEDURE USP_RETORNA_DATAS (
dataref date)
returns (
datanova date)
as
declare variable i integer;
begin
I = 0;
WHILE (DATEADD(MONTH, I, DATAREF) <= CURRENT_TIMESTAMP) DO
BEGIN
datanova = DATEADD(MONTH, I, DATAREF);
I = I + 1;
suspend;
END
end^ |
Espero que ajude |
|
Voltar ao Topo |
|
 |
nildglan Colaborador


Registrado: Sábado, 16 de Agosto de 2008 Mensagens: 1564 Localização: Goianésia do Pará
|
Enviada: Sex Dez 09, 2016 1:14 pm Assunto: |
|
|
imex ficou perfeita cara agora eu acho que não sei como fazer o que quero
porque olha só quanto a primeira data ficou bom agora e quanto o juros do desse mês como vou fazer?
porque por exemplo hoje é 09/12/2016 certo?
da forma que vc colocou da perfeito se agente colocar a data de vencimento menor que a data atual exemplo
01/01/2016
ai sai legal assim
01/01/2016
01/02/2016
01/03/2016
01/04/2016
01/05/2016
01/06/2016
01/07/2016
01/08/2016
01/09/2016
01/10/2016
01/11/2016
01/10/2016
agora se colocar uma data maior que a data de hoje exemplo 30/12/2016
ai ela só sai a té dezembro por causa do parâmetro entendeu
assim
30/01/2016
29/02/2016
30/03/2016
30/04/2016
30/05/2016
30/06/2016
30/07/2016
30/08/2016
30/09/2016
30/10/2016
30/11/2016
imex agradeço por tudo e vc é dos cara melhor que vir em sql, se vc precisar de alguma coisa que eu possa ajudar cara é só falar |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Dez 09, 2016 2:09 pm Assunto: |
|
|
Não sei se entendi corretamente... você está se referindo ao dia?
Experimente dessa forma:
Código: | CREATE OR ALTER PROCEDURE USP_RETORNA_DATAS (
dataref date)
returns (
datanova date)
as
declare variable i integer;
begin
I = 0;
WHILE (DATEDIFF(MONTH, DATEADD(MONTH, I, DATAREF), CURRENT_DATE) >= 0) DO
BEGIN
datanova = DATEADD(MONTH, I, DATAREF);
if (datanova > current_date) then
datanova = current_date;
I = I + 1;
suspend;
END
end^ |
Espero que ajude |
|
Voltar ao Topo |
|
 |
nildglan Colaborador


Registrado: Sábado, 16 de Agosto de 2008 Mensagens: 1564 Localização: Goianésia do Pará
|
Enviada: Sex Dez 09, 2016 2:25 pm Assunto: |
|
|
isso mesmo imex |
|
Voltar ao Topo |
|
 |
|