Olá,
estou com um problema quando monto um select dinamico através
hibernate /criteria …
Minha duvida é o seguinte é informado na teka jsp uma data (String)
depois converto em data só que a data convertida é sem hora . minuto e segundo…
E quando vai no banco não encontra pois usa "=" e não existe a data sem hora,minuto e segundo ???
Alguém já caiu nessa situação …se pudr ajudar …
abs
--criteria
criteria.add(Restrictions.eq(detail.getColumn(),CriteriaSearchDetail.checkTypeOfClass(classTableName, detail.getColumn(), detail.getValue(),detail.getOperator())));
-- banco de dados MYSQL
2011-06-18 20:59:29
--como zerar hora/minuto/segundo
public static Date convertStringToDate(String date,String operator) throws BaseException {
Date out = null;
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
try {
Date dataTODate = dateFormat.parse(date);
if (operator.equals("=")||operator.equals(">")||operator.equals(">=")||operator.equals("!")){
out = DateUtils.lowDateTime(dataTODate);
}else{
out = DateUtils.highDateTime(dataTODate);
}
} catch(Exception e) {
//throw new BaseException(e, "CriteriaSearchDetail", "convertStringToCalendar", "1");
}
return out;
}
--
public static Date lowDateTime(Date date) {
Calendar aux = Calendar.getInstance();
aux.setTime(date);
toOnlyDate(aux); //zera os parametros de hour,min,sec,milisec
return aux.getTime();
}
---
public static Date highDateTime(Date date) {
Calendar aux = Calendar.getInstance();
aux.setTime(date);
toOnlyDate(aux); //zera os parametros de hour,min,sec,milisec
aux.roll(Calendar.DATE, true); //vai para o dia seguinte
aux.roll(Calendar.MILLISECOND, false); //reduz 1 milisegundo
return aux.getTime();
}
--
public static void toOnlyDate(Calendar date) {
date.set(Calendar.HOUR_OF_DAY, 0);
date.set(Calendar.MINUTE, 0);
date.set(Calendar.SECOND, 0);
date.set(Calendar.MILLISECOND, 0);
}