none
Calculo de data RRS feed

  • Pergunta

  • Olá a todos.

    Sou novo na area de programacao no banco de dados e gostaria de uma orientacao.

    Preciso desenvolver um relatorio onde sera apresentado se um determinado produto já possui 1/3 ou 2/3 para o vencimento.

    Tenho as seguintes variaveis.

    Data Atual, Data da Validade e ainda tenho no produto a validade em dias.

    Desde já agradeço a atençao de todos

    Eduardo


    Eduardo Augusto

    quinta-feira, 18 de abril de 2013 19:20

Respostas

  • Eduardo, de uma olhada no exemplo que criei, acredito que seja somente adaptar a sua estrutura:

    create table #temp (Produto varchar(100),data_Fabricacao datetime,  validade datetime)
    
    insert into #temp
    values ('Teste',GETDATE() - 30, GETDATE() + 30),
    ('Teste 2', GETDATE() - 30, GETDATE() + 60),
    ('Teste 3', GETDATE() - 30, GETDATE() + 90)
    
    select * from #temp
    
    select
    	Produto,
    	data_Fabricacao,
    	validade,
    	tempo_Restante = case when (DATEDIFF(Day,GETDATE(),validade) * 100) / DATEDIFF(Day,data_Fabricacao,validade) < 33 then 'Não chegou a 1/3'
    						  when (DATEDIFF(Day,GETDATE(),validade) * 100) / DATEDIFF(Day,data_Fabricacao,validade) between 33 and  66 then 'Ja passou 1/3'
    						  when (DATEDIFF(Day,GETDATE(),validade) * 100) / DATEDIFF(Day,data_Fabricacao,validade) > 66 then 'Ja passou 2/3' end
    		from #temp
    		
    


    Alexandre Matayosi Conde Mauricio.

    • Marcado como Resposta Eduardo.Augusto sexta-feira, 19 de abril de 2013 12:35
    quinta-feira, 18 de abril de 2013 21:06

Todas as Respostas

  • Eduardo, de uma olhada no exemplo que criei, acredito que seja somente adaptar a sua estrutura:

    create table #temp (Produto varchar(100),data_Fabricacao datetime,  validade datetime)
    
    insert into #temp
    values ('Teste',GETDATE() - 30, GETDATE() + 30),
    ('Teste 2', GETDATE() - 30, GETDATE() + 60),
    ('Teste 3', GETDATE() - 30, GETDATE() + 90)
    
    select * from #temp
    
    select
    	Produto,
    	data_Fabricacao,
    	validade,
    	tempo_Restante = case when (DATEDIFF(Day,GETDATE(),validade) * 100) / DATEDIFF(Day,data_Fabricacao,validade) < 33 then 'Não chegou a 1/3'
    						  when (DATEDIFF(Day,GETDATE(),validade) * 100) / DATEDIFF(Day,data_Fabricacao,validade) between 33 and  66 then 'Ja passou 1/3'
    						  when (DATEDIFF(Day,GETDATE(),validade) * 100) / DATEDIFF(Day,data_Fabricacao,validade) > 66 then 'Ja passou 2/3' end
    		from #temp
    		
    


    Alexandre Matayosi Conde Mauricio.

    • Marcado como Resposta Eduardo.Augusto sexta-feira, 19 de abril de 2013 12:35
    quinta-feira, 18 de abril de 2013 21:06
  • Bom dia Alexandre.

    Era isto mesmo que eu preciso.

    Obrigado pela ajuda.


    Eduardo Augusto

    sexta-feira, 19 de abril de 2013 12:35