Select com between

6 respostas
R

Pessoal,

estou precisando fazer um SELECT que recebe varios parametros ultilizados em um FILTRO

só não estou conseguindo fazer isso com os campos de DATA! que fazem um filtro de data tal a data tal:

estou com dificuldades em aplicar o BETWEEN nesse meu SELECT!
Alguem poderia me dar uma Luz:

public List listarLogs(String cdFc, String nrRgi, String nmTela,   
            String tpAcao, String cdUsuario, String horaInicial,   
            String horaFinal, String dataInicial, String dataFinal)   
            throws DAOException {   
  
        cdFc = cdFc != null ? cdFc.replaceAll("\*", "%") : "%";   
        nrRgi = nrRgi != null ? nrRgi.replaceAll("\*", "%") : "%";   
        nmTela = nmTela != null ? nmTela.replaceAll("\*", "%") : "%";   
        tpAcao = tpAcao != null ? tpAcao.replaceAll("\*", "%") : "%";   
        cdUsuario = cdUsuario != null ? cdUsuario.replaceAll("\*", "%") : "%";       
        horaInicial = horaInicial != null ? horaInicial.replaceAll("\*", "%") : "%";   
        horaFinal = horaFinal != null ? horaFinal.replaceAll("\*", "%") : "%";       
        dataInicial = dataInicial != null ? dataInicial.replaceAll("\*", "%") : "%";   
        dataFinal = dataFinal != null ? dataFinal.replaceAll("\*", "%") : "%";   
  
        try {   
  
               
  
            return super.getList("FROM LogTO a WHERE a.cdFc LIKE '" + cdFc   
                    + "' AND" + " a.nrRgi LIKE '" + nrRgi   
                    + "' AND a.nmTela LIKE '" + nmTela   
                    + "' AND a.tpAcao LIKE '" + tpAcao   
                    + "' AND a.cdUsuario LIKE '" + cdUsuario "'");   
  
        } catch (DAOException e) {   
            e.printStackTrace();   
        }   
  
        return null;   
    }

Desde ja
Obrigado pessoal

6 Respostas

R

Estou tentando algo nessa linhas mas creio que não eh a forma correta:

return super.getList("FROM LogTO a WHERE a.cdFc LIKE '" + cdFc
					+ "' AND" + " a.nrRgi LIKE '" + nrRgi
					+ "' AND a.nmTela LIKE '" + nmTela
					+ "' AND a.tpAcao LIKE '" + tpAcao
					+ "' AND a.cdUsuario LIKE '" + cdUsuario
					+ "' AND a.dtEvento LIKE '" + dtEvento + "'BETWEEN'"
					+ dataInicial + "'AND'" + dataFinal + "'");
Need4Speed

para o campo data na sua tabela vc coloca:

and tabela.data between dataInicial and dataFinal

Need4Speed

está faltando um and entre dtEvento e between e antes do parametro vc tem que identificar o campo da tabela que ele fara a comparação. seguido dos parametros do filtro.

R

opaaa! realmente isso era um dos pontos que estavam faltando...
agora ficou da seguinte forma

public List listarLogs(String cdFc, String nrRgi, String nmTela,
			String tpAcao, String cdUsuario, Timestamp horaInicial,
			Timestamp horaFinal, Timestamp dataInicial, Timestamp dataFinal) throws DAOException {

		cdFc = cdFc != null ? cdFc.replaceAll("\*", "%") : "%";
		nrRgi = nrRgi != null ? nrRgi.replaceAll("\*", "%") : "%";
		nmTela = nmTela != null ? nmTela.replaceAll("\*", "%") : "%";
		tpAcao = tpAcao != null ? tpAcao.replaceAll("\*", "%") : "%";
		cdUsuario = cdUsuario != null ? cdUsuario.replaceAll("\*", "%") : "%";
	

		try {

			return super.getList("FROM LogTO a WHERE a.cdFc LIKE '" + cdFc
					+ "' AND" + " a.nrRgi LIKE '" + nrRgi
					+ "' AND a.nmTela LIKE '" + nmTela
					+ "' AND a.tpAcao LIKE '" + tpAcao
					+ "' AND a.cdUsuario LIKE '" + cdUsuario
					+ "' AND a.dtEvento BETWEEN '" + dataInicial.toString() + "' AND '" + dataFinal.toString() + "'"
					+ "' AND a.dtEvento BETWEEN '" + horaInicial.toString() + "' AND '" + horaFinal.toString() + "'"
					
			);

		} catch (DAOException e) {
			e.printStackTrace();
		}

		return null;
	}

mas no meu metodo main eu n estou conseguindo testar ao passar os parametros:

public static void main(String[] args) {

		try {

			
			List resultados = new FlcConsultarLogDAOImpl().listarLogs(null, null, null, null, null, "%", "%", "%", "%");

			System.out.println();
			System.out.println(resultados.size() + " Registros encontrados");

			for (int i = 0; i < resultados.size(); i++) {
				LogTO obj = (LogTO) resultados.get(i);

				System.out.println("Código Log: " + obj.getCdLog());
				System.out.println("Responsavel: " + obj.getCdUsuario());
				System.out.println("Atributo SQL: " + obj.getDsAtributosSql());
				System.out.println("Funcionalidade: " +  obj.getNmFuncionalidade());
				System.out.println("Navegador: " + obj.getNmNavegador());
				System.out.println("Tabela: " + obj.getNmTabela());
				System.out.println("Tela: " + obj.getNmTela());
				System.out.println();
								
			}

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

sabem qual a forma certa para eu passar esses parametros de data para poder testar???

Obrigaadoo

R

Pessoal,

fiz isso mas n estou conseguindoo!

Alguem da um Luz! rs
Por Favor =/

public List listarLogs(String cdFc, String nrRgi, String nmTela,
			String tpAcao, String cdUsuario, Timestamp dataInicial,
			Timestamp dataFinal) throws DAOException {

		cdFc = cdFc != null ? cdFc.replaceAll("\*", "%") : "%";
		nrRgi = nrRgi != null ? nrRgi.replaceAll("\*", "%") : "%";
		nmTela = nmTela != null ? nmTela.replaceAll("\*", "%") : "%";
		tpAcao = tpAcao != null ? tpAcao.replaceAll("\*", "%") : "%";
		cdUsuario = cdUsuario != null ? cdUsuario.replaceAll("\*", "%") : "%";
		
		String dataI = "";
		String dataF = "";
		
		dataI = dataInicial != null ? dataInicial.toString() : "%";
		dataF = dataFinal != null ? dataFinal.toString() : "%";
		
		
		try {

			return super.getList("FROM LogTO a WHERE a.cdFc LIKE '" + cdFc
					+ "' AND" + " a.nrRgi LIKE '" + nrRgi
					+ "' AND a.nmTela LIKE '" + nmTela
					+ "' AND a.tpAcao LIKE '" + tpAcao
					+ "' AND a.cdUsuario LIKE '" + cdUsuario
					+ "' AND a.dtEvento BETWEEN '" + dataI + "' AND '" + dataF + "'"
					
					
			);

		} catch (DAOException e) {
			e.printStackTrace();
		}

		return null;
	}

Obrigado

R

Pessoal ja resolvi,

caso alguem passe pelo mesmo problema:

mudei algumas coisas

ficou da seguinte forma:

public List listarLogs(String cdFc, String nrRgi, String nmTela,
			String tpAcao, String cdUsuario, String dataInicial,
			String dataFinal, String horaInicial, String horaFinal)
			throws DAOException {

		cdFc = cdFc != null ? cdFc.replaceAll("\*", "%") : "%";

		nrRgi = nrRgi != null && nrRgi.trim().length() > 0 ? " AND a.nrRgi LIKE '"
				+ nrRgi.replaceAll("\*", "%") + "' "
				: "";

		nmTela = nmTela != null && nmTela.trim().length() > 0 ? " AND a.nmTela LIKE '"
				+ nmTela.replaceAll("\*", "%") + "' "
				: "";

		tpAcao = tpAcao != null && tpAcao.trim().length() > 0 ? " AND a.tpAcao LIKE '"
				+ tpAcao.replaceAll("\*", "%") + "' "
				: "";

		cdUsuario = cdUsuario != null && cdUsuario.trim().length() > 0 ? " AND a.cdUsuario LIKE '"
				+ cdUsuario.replaceAll("\*", "%") + "' "
				: "";

		// parametros de data
		dataInicial = dataInicial != null && dataInicial.trim().length() > 0 ? " AND a.dtEvento >= TO_TIMESTAMP('"
				+ dataInicial + "', 'DD/MM/YYYY') "
				: "";
		dataFinal = dataFinal != null && dataFinal.trim().length() > 0 ? " AND a.dtEvento <= TO_TIMESTAMP('"
				+ dataFinal + "', 'DD/MM/YYYY') "
				: "";

		// parametros de hora
		horaInicial = horaInicial != null && horaInicial.trim().length() > 0 ? " AND a.dtEvento >= TO_TIMESTAMP('"
				+ horaInicial + "', 'DD/MM/YYYY') "
				: "";
		horaFinal = horaFinal != null && horaFinal.trim().length() > 0 ? " AND a.dtEvento <= TO_TIMESTAMP('"
				+ horaFinal + "', 'DD/MM/YYYY') "
				: "";

		try {

			return super.getList("FROM LogTO a WHERE a.cdFc LIKE '" + cdFc
					+ "' " + nrRgi + nmTela + tpAcao + cdUsuario + dataInicial
					+ dataFinal);

		} catch (DAOException e) {
			e.printStackTrace();
		}

		return null;
	}

absss

Criado 2 de junho de 2009
Ultima resposta 2 de jun. de 2009
Respostas 6
Participantes 2