Re: [firebase-br] Problema com Operação com Data

João Henrique de Souza joao.henrique em jvsind.com.br
Ter Dez 7 12:47:15 -03 2004


Olá...

Fiz uma SP meio nas coxa...
ve se é isso que c quer cara, vc passa uma data e ele compara com a data
atual do servidor.

Abraço
João Henrique

CREATE PROCEDURE DIF_MES (
    data date)
returns (
    resultado integer)
AS
    declare variable ano1 integer;
    declare variable ano2 integer;
    declare variable mes1 integer;
    declare variable mes2 integer;
    declare variable temp integer;
begin
    SELECT
        EXTRACT(MONTH FROM(CURRENT_DATE)),
        EXTRACT(YEAR FROM(CURRENT_DATE)),
        EXTRACT(MONTH FROM(cast(:data as date))),
        EXTRACT(YEAR FROM(cast(:data as date)))
    from RDB$DATABASE
    into :mes1, :ano1, :mes2, :ano2;

    temp=:ano2-:ano1;
    if (temp<0) then
        temp=:temp*(-1);

    temp=temp*12;

    resultado=:mes2-:mes1;
    if (resultado<0) then
        resultado=:resultado*(-1);

    resultado=:resultado+temp;
end

----- Original Message ----- 
From: "João Henrique de Souza" <joao.henrique em jvsind.com.br>
To: <elcovre em codaintellisoft.com.br>; "FireBase" <lista em firebase.com.br>
Sent: Tuesday, December 07, 2004 12:30 PM
Subject: Re: [firebase-br] Problema com Operação com Data


> Amigo... pelo oq eu to vendo nessa sua select o erro se deve pq vc ta
> tentando extrair o mes de um lugar que não tem...
>
> Tipo assim: quando vc faz  dataX-dataY o resultado será o numero de dias
de
> uma data para a outra
> Faça o teste ae....
>
> SELECT
> CURRENT_DATE - CAST('12/06/2004' as date)
> from RDB$DATABASE
>
> veja que o valor retornado será 1 (se vc fizer o teste hoje, no dia
> 07/12/2004)
>
> Veja se oq vc quer não é DIVIDIR esse valor por 30.
>
> Vc não pode fazer isso por uma Stored Procedure?
>
> []´s
> João Henrique
>
> ----- Original Message ----- 
> From: "Evandro L. Covre" <elcovre em codaintellisoft.com.br>
> To: "'FireBase'" <lista em firebase.com.br>
> Sent: Tuesday, December 07, 2004 11:48 AM
> Subject: [firebase-br] Problema com Operação com Data
>
>
> Ae galera, sei q já foi discutido várias vezes a respeito de operações com
> datas, mas procurei por tudo e nenhuma solucionou meu problema. Estou
> precisando dentro de uma procedure pegar o numero de meses de uma
subtração
> entre duas datas e jogar em uma variável:
>
>
>
> SELECT EXTRACT(MONTH FROM(CURRENT_DATE - CAST('12/31/2003' AS DATE))) FROM
> RDB$DATABASE
>
> INTO :V_NRO_MES
>
>
>
> Só que esse select me retorna uma mensagem de erro:
>
> Invalid String.
>
> Dynamic SQL Error.
>
> SQL error code = -105.
>
> Specified EXTRACT part does not exist in input datatype.
>
>
>
> Se eu fizer
>
>
>
> SELECT CAST(current_timestamp - CAST('12/31/2003' AS TIMESTAMP)AS
TIMESTAMP)
> FROM RDB$DATABASE
>
>
>
> Me retorna erro de conversão de string
>
>
>
> Agora como eu poderia fazer essa conta e já retornar o valor dos meses da
> data calculada?
>
>
>
> Obrigado
>
>
>
> Evandro L. Covre
>
> Analista de Sistemas - Coda Intelligent Softwares
>
> Tel: 16 2101 2601
>  <http://www.codaintellisoft.com.br/> http://www.codaintellisoft.com.br
>
> Ribeirão Preto - SP
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>
>
>
> ---
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.806 / Virus Database: 548 - Release Date: 5/12/2004
>


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.806 / Virus Database: 548 - Release Date: 5/12/2004





Mais detalhes sobre a lista de discussão lista