Pessoal…estou com o seguinte problema…Procurei aqui no fórum mas não achei…
O problema é o seguinte:
Tenho um select para adicionar em um relatório no ireport. onde presciso agrupar os dados por data.
Até aí ok… o problema é que as datas são gravadas no formato ‘yyyy-MM-dd hh:mm:ss’ assim quando eu posto o group by no sql ele não agrupa as
datas corretamente pelo fato que cada data possui hora minuto e segundo…assim para o banco não reconhece como mesma data…
Outro problema… No meu sistema possui duas opções, trabalhar com servidor de dados separado, no caso o postgresql e a opção de trabalhar com um banco de dados embutido, no caso o derby.
Pesquisei para comparar datas , no postgres daria para usar o TO_CHAR(DATA,‘yyyy-MM-dd’) para formatar a data e retirar minutos e segundos para agrupar, mas no derby isso não funciona… eu prescisaria de um sql puro , ou seja que funcionasse nos dos bds para que o relatório fosse gerado independente de qual dos bancos estariam sendo usados.
Um exemplo pra ficar mais claro:
Tenho uma tabela no BD
CAIXA
CD TERMINAL DATA VALOR
1 1 2009-08-15 13:30:56 150.00
2 2 2009-08-15 13:15:00 140.00
3 1 2009-08-16 13:20:50 120.00
4 2 2009-08-16 13:21:50 115.00
Gostaria de fazer aparecer no relatório a listagem agrupada por data
o resultado final deveria sair assim:
DATA VALOR
2009-08-15 290.00 //somou os dois registros do dia 15
2009-08-16 135.00 //somou os dois registros do dia 16
O select que eu estava implementando está assim
SELECT
DATA, // TO_CHAR(DATA,'YYY-MM-DD') AS DT funciona no postgresql mas no derby não existe o comando TO_CHAR
SUM(VALOR) AS VL
FROM CAIXA
GROUP BY DATA
ORDER BY DATA
Se alguém puder me ajudar, agradeço