Usuário com melhor resposta
Procedure para gerar um gráfico (quantidade de cadastros por dia)

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!
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 campodrop table exemplo
Abs;
-
Gustavo Maia Aguiar wrote: Boa Tarde,
Tente o seguinte:
Code SnippetALTER
procedure [dbo].[aol_ListarAlunosMatriculadosPeriodo]@dataInicio
datetime , @dataFim datetimeas
with
consulta as (from tbcandidato
where
Select
From
Consulta
Group
byorder
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 datetimeas
with
consulta as (Select
cast
(convert(char(8),datacadastro,112) as datetime) as datCadastrofrom
tbcandidatowhere
(
datacadastro >= @dataInicio or @dataInicio is null) and(
datacadastro <= @dataFim or @dataFim is null))Select
datCadastro
as dataCadastro,count
(datCadastro) as numeroAlunosFrom
Consulta
Group
bydatCadastro
order
by datCadastro
Todas as 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 campodrop table exemplo
Abs;
-
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 datetimeas
Select
convert
(varchar,datacadastro,103) as dataCadastro,count
(convert(varchar,datacadastro,103)) as numeroAlunosfrom
tbcandidatowhere
(
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 -
Boa Tarde,
Tente o seguinte:
Code SnippetALTER
procedure [dbo].[aol_ListarAlunosMatriculadosPeriodo]@dataInicio
datetime , @dataFim datetimeas
with
consulta as (Select
From
Consulta
Group
byorder
by dataCadastro[ ]s,
Gustavo
-
Gustavo Maia Aguiar wrote: Boa Tarde,
Tente o seguinte:
Code SnippetALTER
procedure [dbo].[aol_ListarAlunosMatriculadosPeriodo]@dataInicio
datetime , @dataFim datetimeas
with
consulta as (from tbcandidato
where
Select
From
Consulta
Group
byorder
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 3De qq forma vou continuar tentando, obrigado pela ajuda.
-
Gustavo Maia Aguiar wrote: Boa Tarde,
Tente o seguinte:
Code SnippetALTER
procedure [dbo].[aol_ListarAlunosMatriculadosPeriodo]@dataInicio
datetime , @dataFim datetimeas
with
consulta as (from tbcandidato
where
Select
From
Consulta
Group
byorder
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 datetimeas
with
consulta as (Select
cast
(convert(char(8),datacadastro,112) as datetime) as datCadastrofrom
tbcandidatowhere
(
datacadastro >= @dataInicio or @dataInicio is null) and(
datacadastro <= @dataFim or @dataFim is null))Select
datCadastro
as dataCadastro,count
(datCadastro) as numeroAlunosFrom
Consulta
Group
bydatCadastro
order
by datCadastro