Agrupar somente por data num campo timestamp

Delphi

22/02/2005

Turma. num comando sql, como mando agrupar por um campo timestamp de forma q ele agrupe somente pela data ignorando a hora??

tentei group by date(dt_hr_tarefa) mas não rola

Q devo fazer?


Zenner

Zenner

Curtidas 0

Respostas

Noelrocha

Noelrocha

22/02/2005

Em MSSQL tem como fazer isso sem problemas ....

um select exemplo seria ...


select convert(varchar(8),DATA,8) as hora
from CLIENTES
group by convert(varchar(8),DATA,8)




qual banco de dados você usa?!


GOSTEI 0
Noelrocha

Noelrocha

22/02/2005

Em MSSQL tem como fazer isso sem problemas ....

um select exemplo seria ...


select convert(varchar( 8 ),DATA, 8 ) as hora
from CLIENTES
group by convert(varchar( 8 ) ,DATA, 8 )


GOSTEI 0
Gandalf.nho

Gandalf.nho

22/02/2005

Qual seu banco de dados?


GOSTEI 0
Zenner

Zenner

22/02/2005

Firebird...

Encontrei o cod q pega somente a data, porém quando agrupo ele ou dá erro ou não faz..


------------------------- Coluna não encontrada ----------------------
SELECT cd_funcionario, cast(dt_hr_tarefa as date) as teste
FROM acoes group by cd_funcionario, teste


------------------------- Token unknown ----------------------
SELECT cd_funcionario, cast(dt_hr_tarefa as date) as teste
FROM acoes group by cd_funcionario, dt_hr_tarefa

------------------------- Erro no cast --------------------------
SELECT cd_funcionario, cast(dt_hr_tarefa as date) as teste
FROM acoes group by cd_funcionario, cast(dt_hr_tarefa as date)


GOSTEI 0
Gandalf.nho

Gandalf.nho

22/02/2005

Qual versão do Firebird você está usando? Acho que isso só funciona na versão 1.5


GOSTEI 0
Zenner

Zenner

22/02/2005

1.5 mesmo....

Porém acho q consegui.. Resolvi criar uma view contendo todos os dados q preciso, formatando o campo timestamp pra campo data.. Depos dei um select com group by


GOSTEI 0
Gandalf.nho

Gandalf.nho

22/02/2005

Faça um teste assim e veja se funcione:

SELECT cd_funcionario, cast(dt_hr_tarefa as date) as teste 
FROM acoes group by cd_funcionario, 2



GOSTEI 0
Zenner

Zenner

22/02/2005

rolou não.. mas consegui fazer.. Só falta terminar o sql final....


Como funciona o group com order??

select cd_funcionario, max(dt_tarefa), nm_tarefa from VW_ACOES group by cd_funcionario order by cd_funcionario, dt_tarefa, nm_tarefa

Como agrupo isso por cd_funcionario e dt_tarefa mostrando tb o nome da tarefa??


GOSTEI 0
Paulo_amorim

Paulo_amorim

22/02/2005

Olá

Não sei se ajuda, e não sei se funciona em todos os bancos, mas pode-se fazer um TRUNC na data para eliminar a hora...

Ex. ORACLE:

SELECT TRUNC(sysdate) FROM dual
Retorna 22/02/2005

Espero que ajude
Até+


GOSTEI 0
Gandalf.nho

Gandalf.nho

22/02/2005

Acho que nesse caso não vai dar, pelo menos não diretamente. De acordo com a documentação do FB 1.5 ele não aceita funções agregadas (MIN, MAX, COUNT, SUM...) na cláusula GROUP BY.


GOSTEI 0
Rômulo Barros

Rômulo Barros

22/02/2005

[color=red:a81fb1035c]Veja se [url=http://forum.devmedia.com.br/viewtopic.php?t=50419&highlight=&sid=7ab17ae8ca5a46a66d0359e233a2d75d]ESTE LINK[/url] pode ajudar...[/color:a81fb1035c]


GOSTEI 0
POSTAR