Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MAPSantos

Datepart

Recommended Posts

Oi Galera,Tou usando uma bd em access, e tou necessitando de fazer um select num campo date/time mas necessito que ele agrupe apenas pela data, tou tentando com o seguinte query mas ta dando erro, alguem pode ajudar?Set rsCheckClinfo2 = Server.CreateObject("ADODB.Recordset")strSQLClinfo2 = "SELECT DATEPART(year,data_criacao), DATEPART(month,data_criacao), DATEPART(day,data_criacao) FROM tblOutTecnico GROUP BY DATEPART(year,data_criacao), DATEPART(month,data_criacao), DATEPART(day,data_criacao)"rsCheckClinfo2.Open strSQLClinfo2, adoCon2You tried to execute a query that does not include the specified expression 'data_criacao' as part of an aggregate function.Valeu um abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas pq você está utilizando DATEPART? Está querendo apenas pegar parte da data?

 

A sintaxe correta para utilização do DATEPART seria: yyyy - Ano , m - Mês , d - Dia

Ao invés de DATEPART(year,data_criacao), seria DATEPART("yyyy",data_criacao)

 

Ao invés de DATEPART você poderia utilizar também year(data_criacao), day(data_criacao), month(data_criacao)

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu apenas quero agrupar os dados pelo campo da tabela que se chama data_criacao, mas apenas pela data que ta nesse campo e n por data e hora!tentei como voce disse mas ta dando o mesmo erro! :|You tried to execute a query that does not include the specified expression 'data_criacao' as part of an aggregate function.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta isso.

Set rsCheckClinfo2 = Server.CreateObject("ADODB.Recordset")
strSQLClinfo2 = "SELECT DISTINCTROW data_criacao FROM tblOutTecnico "
rsCheckClinfo2.Open strSQLClinfo2, adoCon2
Obs. seu campo data gravou data e hora? Ou só a data?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o meu campo gravou data e hora e' esse o problema ... com o distinctrow ele vai usar o campo todo (data / hora) o que eu preciso e' que ele agrupe apenas com a data :unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se tem alguma forma de separar a data da hora direto no SQL.

 

Mas tenta isso aqui...

strSQLClinfo2 = "SELECT day(data_criacao) as dia,month(data_criacao) as mes,year(data_criacao) as ano FROM tblOutTecnico"
strSQLClinfo2 = strSQLClinfo2 & " GROUP BY day(data_criacao),month(data_criacao),year(data_criacao) "
No meu banco funcionou. O único problema é que você vai ter que montar a data na hora de ler.

data_criacao = rsCheckClinfo2("dia") & "/"& rsCheckClinfo2("mes") & "/"& rsCheckClinfo2("ano")

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu funcionou o select. mas tal como voce disse o único problema é que ao montar a data na hora de ler, ele n me retorna os valores que pretendo ....

 

Set rsCheckClinfo2 = Server.CreateObject("ADODB.Recordset")strSQLClinfo2 = "SELECT day(data_criacao) as dia, month(data_criacao) as mes, year(data_criacao) as ano FROM tblOutTecnico"strSQLClinfo2 = strSQLClinfo2 & " GROUP BY day(data_criacao), month(data_criacao), year(data_criacao) ORDER by day(data_criacao), month(data_criacao), year(data_criacao)"rsCheckClinfo2.Open strSQLClinfo2, adoCon2, 3,3while not rsCheckClinfo2.EOFdata_criacao = rsCheckClinfo2("dia") & "-"& rsCheckClinfo2("mes") & "-"& rsCheckClinfo2("ano")'data_criacao = "07-03-2007"Set rsCheckClinfo = Server.CreateObject("ADODB.Recordset")strSQLClinfo = "SELECT count(*) as abertasnet FROM tblOutTecnico Where data_criacao like '" & data_criacao & "%' and estado = 'ABERTA' and tipo_actividade = 'SEM DESPISTE NET'"rsCheckClinfo.Open strSQLClinfo, adoCon2

O problema é que quando faço o like ele ta' mandando a data_criacao que eu montei, no entanto no ele apaga os "0" da data, colocando a data do dia 1 por ex. como 1/3/2007 e ao fazendo pesquisa com like ele procura com esse valor mas no banco a data esta como "01/03/2007" logo n retorna qualquer valor :|

 

julgo que seja este o problema :|

 

Arranjei forma de contornar .... editando a data q o banco retorna assim ...

 

if len(rsCheckClinfo2("dia")) = 1 and len(rsCheckClinfo2("mes")) = 1 then

data_criacao = "0" & rsCheckClinfo2("dia") & "-0"& rsCheckClinfo2("mes") & "-"& rsCheckClinfo2("ano")

elseif len(rsCheckClinfo2("dia")) = 2 and len(rsCheckClinfo2("mes")) = 1 then

data_criacao = rsCheckClinfo2("dia") & "-0"& rsCheckClinfo2("mes") & "-"& rsCheckClinfo2("ano")

elseif len(rsCheckClinfo2("dia")) = 1 and len(rsCheckClinfo2("mes")) = 2 then

data_criacao = "0" & rsCheckClinfo2("dia") & "-"& rsCheckClinfo2("mes") & "-"& rsCheckClinfo2("ano")

else

data_criacao = rsCheckClinfo2("dia") & "-"& rsCheckClinfo2("mes") & "-"& rsCheckClinfo2("ano")

end if

 

Será que n existe forma de ser mais simples? :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.