sql >> Databasteknik >  >> RDS >> Mysql

Hur man jämför datum med hjälp av en klausul i viloläge

Du bör använda HQL-parametrar istället för sammanlänkning.

Ta det här exemplet:

Map<String, Object> parameterNameAndValues = new HashMap<String, Object>();

Date startDate;
Date endDate;

// Assign values to startDate and endDate

parameterNameAndValues.put("startDate", startDate);
parameterNameAndValues.put("endDate", endDate);

String hqlQuery = "FROM EntityName WHERE fechaInicio BETWEEN :startDate AND :endDate";

Query query = this.sessionFactory.getCurrentSession().createQuery(hqlQuery);

for (Entry<String, Object> e : parameterNameAndValues.entrySet()) {
    query.setParameter(e.getKey(), e.getValue());
}

return query.list();

Detta kommer att binda datumparametrarna och viloläge kommer att göra de nödvändiga omvandlingarna för att undvika förnuftskontroller och fel. Kom ihåg att även om MySQL sparar Date-objekt i det formatet kanske inte andra databaser och det kommer att undergräva vilolägeshjälpen.



  1. Java:Anropar en lagrad procedur i en Oracle-databas

  2. 'OPTION SQL_SELECT_LIMIT=DEFAULT'

  3. MySQL - Välj från en lista med nummer de utan motsvarighet i id-fältet i en tabell

  4. Använda två samlade värden från en SELECT-underfråga i en enda yttre SELECT-fråga