J'essaie d'obtenir des rendez-vous pour une date particulière.Spring-boot: mongoDB comparaison de date ne fonctionne pas
Donc je passe fromDate
et toDate
pour trouver des données dans cette période.
Voici mon code, dans lequel la méthode de requête modifie la date réelle qui lui est transmise.
J'ai également collé la requête formée par ce code dans botte de ressort.
DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS\'Z\'");
fromDate = "2017-10-06T00:00:00.000Z";
toDate = "2017-10-07T23:00:00.000Z";
Date startDate,endDate;
startDate = dateFormatter.parse(fromDate);
endDate = dateFormatter.parse(toDate);
System.out.println(startDate);
System.out.println(endDate);
Query q = new Query().addCriteria(new Criteria().orOperator(
new Criteria().andOperator(Criteria.where("fromDate").gte(startDate),
Criteria.where("fromDate").lte(endDate)),
new Criteria().andOperator(Criteria.where("toDate").gte(startDate),
Criteria.where("toDate").lte(endDate))
));
System.out.println(startDate);
System.out.println(endDate);
System.out.println(q); //here in query m getting different date
List<Appointment> result= mongoTemplate.find(q, Appointment.class);
System.out.println(result);
Quand je suis en train d'imprimer la requête, il imprime le JSON suivant ce qui est faux:
{
"$or": [
{
"$and": [
{
"fromDate": {
"$gte": {
"$date": "2017-10-05T18:30:00.000Z" //expected date 2017-10-06
}
}
},
{
"fromDate": {
"$lte": {
"$date": "2017-10-07T17:30:00.000Z"
}
}
}
]
},
{
"$and": [
{
"toDate": {
"$gte": {
"$date": "2017-10-05T18:30:00.000Z"
}
}
},
{
"toDate": {
"$lte": {
"$date": "2017-10-07T17:30:00.000Z"
}
}
}
]
}
]
}
Ma date prévue étaient "2017-10-06T00: 00: 00.000Z" et « 2017 -10-07T23: 00: 00.000Z ".