Comparar ano em SQL e ORACLE [RESOLVIDO]

2 respostas
Wiliam_Witter

Bom dia pessoal, estou com um problema aqui, preciso comparar um “ano corrente” que é do tipo Date que eu transformei em Integer, com outra ano que eu trago na consulta HQL

desse jeito

Calendar cal = Calendar.getInstance();
Integer anoCorrente = cal.get(Calendar.YEAR);

StringBuffer q = new StringBuffer();
	q.append(" SELECT SUM(ia.quantidade*ia.preco) ");
	q.append(" FROM ItemAutorizacaoCompra ia ");
	q.append(" WHERE ia.autorizacaoCompra.processo.orgao.idOrgao = ? ");
	q.append(" AND ia.itemCompra.produto.classeItem.idClasseItem = ? ");
	q.append(" [color=blue]AND YEAR(ia.autorizacaoCompra.dataAutorizacao) = ?[/color] ");

esta funcionando para banco SQL mais precisa funcionar com ORACLE também, queria saber se alguém sabe algum comando q funcione tanto no oracle quanto no sql

2 Respostas

Filipe_Chagas

Para funcionar no oracle você precisa usar o comando extract.

http://www.techonthenet.com/oracle/functions/extract.php

Calendar cal = Calendar.getInstance();
Integer anoCorrente = cal.get(Calendar.YEAR);

StringBuffer q = new StringBuffer();
q.append(" SELECT SUM(ia.quantidade*ia.preco) ");
q.append(" FROM ItemAutorizacaoCompra ia ");
q.append(" WHERE ia.autorizacaoCompra.processo.orgao.idOrgao = ? ");
q.append(" AND ia.itemCompra.produto.classeItem.idClasseItem = ? ");
q.append(" AND EXTRACT (YEAR FROM ia.autorizacaoCompra.dataAutorizacao) = ? ");

Agora pra funcionar em mais de um sgbd eu te aconselho a colocar um framework ORM no meio. Com o hibernate, por exemplo, vc poderia usar HQL ou Criteria…

:wink:

Wiliam_Witter

valeu brigado

Criado 8 de janeiro de 2009
Ultima resposta 8 de jan. de 2009
Respostas 2
Participantes 2