none
Duvida sql server com data e variaveis RRS feed

  • Pergunta

  • Eu tenho uma stored procedure que tem como parametro uma data por exemplo faturamento()e passo o a data de hoje qdo chamo ela faturamento('06/06/2013') porem dentro dela preciso ter uma variavel que é setada apartir desta data que passei porem no where preciso que seja passado a data assim:

    Where DtFat >= '01/06/2013' and

    DtFat < '06/06/2013'

    Ai assim minha duvida é como faço a variavel interna DtInicial(setada como 01/01/2000) assumir o mes e ano da data que estou passando?

    Obrigado 


    • Editado Shiguetaka quinta-feira, 6 de junho de 2013 14:21
    quinta-feira, 6 de junho de 2013 14:20

Respostas

  • Shiguetaka, o que voce quer é armazenar em uma variavel o primeiro dia do mes ?

    se for tente assim:

    declare @data datetime
    set @data = (select DATEADD(day,- DATEPART(day,getdate()) +1,getdate()))
    select @data


    Alexandre Matayosi Conde Mauricio.

    • Marcado como Resposta Shiguetaka quinta-feira, 6 de junho de 2013 15:26
    quinta-feira, 6 de junho de 2013 14:59
  • Bom dia,

    Shiguetaka, não sei se entendi corretamente a questão, mas experimente fazer um teste com o script abaixo:

    declare @DtParam date;
    declare @DtInicial date;
    
    set @DtParam = '31/12/2013';
    set @DtInicial = '01/01/2000';
    
    set @DtInicial = 
        DATEADD
            (MONTH, 
             MONTH(@DtParam) - MONTH(@DtInicial), 
             DATEADD(YEAR, YEAR(@DtParam) - YEAR(@DtInicial), @DtInicial));
    
    select @DtInicial

    Espero que seja útil.


    Assinatura: http://www.imoveisemexposicao.com.br


    • Editado gapimex quinta-feira, 6 de junho de 2013 15:08
    • Marcado como Resposta Shiguetaka quinta-feira, 6 de junho de 2013 15:27
    quinta-feira, 6 de junho de 2013 15:07

Todas as Respostas

  • Shiguetaka, o que voce quer é armazenar em uma variavel o primeiro dia do mes ?

    se for tente assim:

    declare @data datetime
    set @data = (select DATEADD(day,- DATEPART(day,getdate()) +1,getdate()))
    select @data


    Alexandre Matayosi Conde Mauricio.

    • Marcado como Resposta Shiguetaka quinta-feira, 6 de junho de 2013 15:26
    quinta-feira, 6 de junho de 2013 14:59
  • Shiguetaka, bom dia!

    Tenho o costume de fazer assim em procs:

    Where (DtFat >= @DtInicial and  DtFat < @DtFinal)

    Espero ter ajudado.

    quinta-feira, 6 de junho de 2013 15:06
  • Bom dia,

    Shiguetaka, não sei se entendi corretamente a questão, mas experimente fazer um teste com o script abaixo:

    declare @DtParam date;
    declare @DtInicial date;
    
    set @DtParam = '31/12/2013';
    set @DtInicial = '01/01/2000';
    
    set @DtInicial = 
        DATEADD
            (MONTH, 
             MONTH(@DtParam) - MONTH(@DtInicial), 
             DATEADD(YEAR, YEAR(@DtParam) - YEAR(@DtInicial), @DtInicial));
    
    select @DtInicial

    Espero que seja útil.


    Assinatura: http://www.imoveisemexposicao.com.br


    • Editado gapimex quinta-feira, 6 de junho de 2013 15:08
    • Marcado como Resposta Shiguetaka quinta-feira, 6 de junho de 2013 15:27
    quinta-feira, 6 de junho de 2013 15:07
  • Olá Shiguetaba, para você passar um valor a uma variável que você enviado a procedure, utiliza o SET, exemplo

    Create procedure Buscadata (@DataDATE) as
    begin
    SELECT * FROM MinhaTabela WHERE Data = @Data
    end
    
    execute Buscadata '20130101' OU
    EXEC Buscadata '20130101'
    SET @inicio = 20130101
    SET @FIM = 20130330

    No WHERE faça assim:

    WHERE
    	DataInicio >= @inicio
    AND 
    	dataFim <= @FIM

    Espero que eu tenha te ajudado,

    Abração


    Wellinghton Pimentel Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quinta-feira, 6 de junho de 2013 15:13