none
Procedure para gerar um gráfico (quantidade de cadastros por dia) RRS feed

  • Pergunta

  • Pessoal estou com um pequeno problema pra gerar meu gráfico de candidatos cadastrados por dia. O problema esta no agrupamento do campo data, como eu uso a funcao GETDATE() do Sql server 2005 ele coloca, os milesegundos, sendo que eu so quero a data. Ai eu testei usar o convert(varchar,dataCadastro,103) porem neste caso nao posso ordenar a data, a ordenação é feita pela string da data... Alguem poderia me ajudar com isso desde já agradeço!
    terça-feira, 19 de agosto de 2008 16:53

Respostas

  •  

    veja se ajuda:

     

    create table exemplo (campo datetime)

    insert into exemplo (campo) Values (getdate())
    insert into exemplo (campo) Values (getdate()+1)
    insert into exemplo (campo) Values (getdate()+2)
    insert into exemplo (campo) Values (getdate())
    insert into exemplo (campo) Values (getdate()+5)
    insert into exemplo (campo) Values (getdate()+10)

    Select convert(char(10),campo,126)
    from exemplo
    order by campo

    drop table exemplo

     

    Abs;

    terça-feira, 19 de agosto de 2008 17:02
  •  Gustavo Maia Aguiar wrote:

    Boa Tarde,

     

    Tente o seguinte:

     

    Code Snippet

    ALTER procedure [dbo].[aol_ListarAlunosMatriculadosPeriodo]

    @dataInicio datetime , @dataFim datetime

    as

     

    with consulta as (

    Select

    cast(convert(char(8),datacadastro,112) as datetime) as datCadastro

    from tbcandidato

    where

    (datacadastro >= @dataInicio or @dataInicio is null) and

    (datacadastro <= @dataFim or @dataFim is null))

     

    Select

    convert(char(10),datCadastro,103) as dataCadastro,

    count(datCadastro) as numeroAlunos

    From

    Consulta

    Group by

    convert(char(10),datCadastro,103)

    order by dataCadastro

     

     

    [ ]s,

     

    Gustavo

     

     

    Opa Gustavo, seguindo sua dica consegui resolver o problema, fiz pequenas alterações:

     

    ALTER procedure [dbo].[aol_ListarAlunosMatriculadosPeriodo]

    @dataInicio datetime , @dataFim datetime

    as

    with consulta as (

    Select

    cast(convert(char(8),datacadastro,112) as datetime) as datCadastro

    from tbcandidato

    where

    (datacadastro >= @dataInicio or @dataInicio is null) and

    (datacadastro <= @dataFim or @dataFim is null))

    Select

    datCadastro as dataCadastro,

    count(datCadastro) as numeroAlunos

    From

    Consulta

    Group by

    datCadastro

    order by datCadastro

    quarta-feira, 20 de agosto de 2008 12:40

Todas as Respostas

  • Boa Tarde,

     

    Seu SQL Server é 2005 ? Você pode postar a consulta ?

     

    [ ]s,

     

    Gustavo

     

    terça-feira, 19 de agosto de 2008 17:01
  •  

    veja se ajuda:

     

    create table exemplo (campo datetime)

    insert into exemplo (campo) Values (getdate())
    insert into exemplo (campo) Values (getdate()+1)
    insert into exemplo (campo) Values (getdate()+2)
    insert into exemplo (campo) Values (getdate())
    insert into exemplo (campo) Values (getdate()+5)
    insert into exemplo (campo) Values (getdate()+10)

    Select convert(char(10),campo,126)
    from exemplo
    order by campo

    drop table exemplo

     

    Abs;

    terça-feira, 19 de agosto de 2008 17:02
  •  Gustavo Maia Aguiar wrote:

    Boa Tarde,

     

    Seu SQL Server é 2005 ? Você pode postar a consulta ?

     

    [ ]s,

     

    Gustavo

     

     

    Opa Gustavo, é sim o 2005, olha como esta a consulta:

     

    ALTER procedure [dbo].[aol_ListarAlunosMatriculadosPeriodo]

    @dataInicio datetime , @dataFim datetime

    as

    Select

    convert(varchar,datacadastro,103) as dataCadastro,

    count(convert(varchar,datacadastro,103)) as numeroAlunos

    from tbcandidato

    where

    (datacadastro >= @dataInicio or @dataInicio is null) and

    (datacadastro <= @dataFim or @dataFim is null)

    group by convert(varchar,datacadastro,103)

    order by convert(varchar,datacadastro,103)

     

    O resultado fica assim:

    01/08/2008 4
    03/08/2008 2
    04/08/2008 23
    05/08/2008 13
    06/08/2008 2
    08/08/2008 9
    09/08/2008 4
    10/08/2008 1
    11/08/2008 6
    12/08/2008 5
    13/08/2008 7
    14/08/2008 3
    15/08/2008 2
    16/08/2008 1
    17/08/2008 1
    18/08/2008 7
    19/08/2008 4
    21/07/2008 2
    22/07/2008 23
    23/07/2008 10
    24/07/2008 4
    25/07/2008 4
    26/07/2008 3
    27/07/2008 1
    29/07/2008 2
    30/07/2008 1
    31/07/2008 3

    terça-feira, 19 de agosto de 2008 17:46
  • Boa Tarde,

     

    Tente o seguinte:

     

    Code Snippet

    ALTER procedure [dbo].[aol_ListarAlunosMatriculadosPeriodo]

    @dataInicio datetime , @dataFim datetime

    as

     

    with consulta as (

    Select

    cast(convert(char(8),datacadastro,112) as datetime) as datCadastro

    from tbcandidato

    where

    (datacadastro >= @dataInicio or @dataInicio is null) and

    (datacadastro <= @dataFim or @dataFim is null))

     

    Select

    convert(char(10),datCadastro,103) as dataCadastro,

    count(datCadastro) as numeroAlunos

    From

    Consulta

    Group by

    convert(char(10),datCadastro,103)

    order by dataCadastro

     

     

    [ ]s,

     

    Gustavo

     

    terça-feira, 19 de agosto de 2008 20:42
  •  Gustavo Maia Aguiar wrote:

    Boa Tarde,

     

    Tente o seguinte:

     

    Code Snippet

    ALTER procedure [dbo].[aol_ListarAlunosMatriculadosPeriodo]

    @dataInicio datetime , @dataFim datetime

    as

     

    with consulta as (

    Select

    cast(convert(char(8),datacadastro,112) as datetime) as datCadastro

    from tbcandidato

    where

    (datacadastro >= @dataInicio or @dataInicio is null) and

    (datacadastro <= @dataFim or @dataFim is null))

     

    Select

    convert(char(10),datCadastro,103) as dataCadastro,

    count(datCadastro) as numeroAlunos

    From

    Consulta

    Group by

    convert(char(10),datCadastro,103)

    order by dataCadastro

     

     

    [ ]s,

     

    Gustavo

     

     

    Opa Gustavo, infelizmente sua sugestão não resolveu o problema, olha como ficou o resultado:

     

    01/08/2008 4
    03/08/2008 2
    04/08/2008 23
    05/08/2008 13
    06/08/2008 2
    08/08/2008 9
    09/08/2008 4
    10/08/2008 1
    11/08/2008 6
    12/08/2008 5
    13/08/2008 7
    14/08/2008 3
    15/08/2008 2
    16/08/2008 1
    17/08/2008 1
    18/08/2008 7
    19/08/2008 4
    21/07/2008 2
    22/07/2008 23
    23/07/2008 10
    24/07/2008 4
    25/07/2008 4
    26/07/2008 3
    27/07/2008 1
    29/07/2008 2
    30/07/2008 1
    31/07/2008 3

     

    De qq forma vou continuar tentando, obrigado pela ajuda.

    quarta-feira, 20 de agosto de 2008 12:24
  •  Gustavo Maia Aguiar wrote:

    Boa Tarde,

     

    Tente o seguinte:

     

    Code Snippet

    ALTER procedure [dbo].[aol_ListarAlunosMatriculadosPeriodo]

    @dataInicio datetime , @dataFim datetime

    as

     

    with consulta as (

    Select

    cast(convert(char(8),datacadastro,112) as datetime) as datCadastro

    from tbcandidato

    where

    (datacadastro >= @dataInicio or @dataInicio is null) and

    (datacadastro <= @dataFim or @dataFim is null))

     

    Select

    convert(char(10),datCadastro,103) as dataCadastro,

    count(datCadastro) as numeroAlunos

    From

    Consulta

    Group by

    convert(char(10),datCadastro,103)

    order by dataCadastro

     

     

    [ ]s,

     

    Gustavo

     

     

    Opa Gustavo, seguindo sua dica consegui resolver o problema, fiz pequenas alterações:

     

    ALTER procedure [dbo].[aol_ListarAlunosMatriculadosPeriodo]

    @dataInicio datetime , @dataFim datetime

    as

    with consulta as (

    Select

    cast(convert(char(8),datacadastro,112) as datetime) as datCadastro

    from tbcandidato

    where

    (datacadastro >= @dataInicio or @dataInicio is null) and

    (datacadastro <= @dataFim or @dataFim is null))

    Select

    datCadastro as dataCadastro,

    count(datCadastro) as numeroAlunos

    From

    Consulta

    Group by

    datCadastro

    order by datCadastro

    quarta-feira, 20 de agosto de 2008 12:40