sql >> Database teknologi >  >> RDS >> Mysql

Hvordan man sammenligner datoer ved at bruge mellem klausul i dvale

Du bør bruge HQL-parametre i stedet for sammenkædning.

Tag dette eksempel:

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();

Dette vil binde datoparametrene, og dvale vil foretage de nødvendige konverteringer for at undgå fornuftskontrol og fejl. Husk, at selvom MySQL gemmer Date-objekter i det format, vil andre databaser muligvis ikke, og det vil underminere Hibernate-hjælpen.



  1. Vigtigheden af ​​WHERE 1 i MySQL-forespørgsler

  2. Sådan starter parallelle planer op – del 2

  3. Hvordan IsFinite() virker i PostgreSQL

  4. Opret forbindelse til MSSQL-databasen ved hjælp af Flask-SQLAlchemy