У меня есть таблица пользователей с полем «createDate» (тип отметки времени), где у меня есть данные в формате «2020-04-16 01:36:57». Я использую Spring с Criteria API и мне нужно отправить «2020- 04-16 'и получить эту строку.
Итак, Критерии получают эту строку' 2020-04-16 ', затем я анализирую ее в формате данных, поскольку Критерии требуют:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date = null;
try {
date = formatter.parse(timeValue) ;
} catch (ParseException e) {
e.printStackTrace();
}
И используйте это:
return criteriaBuilder.equal(root.get(fieldName).as(Date.class), date);
Мой запрос ничего не возвращает, и в журнале я вижу: .... где приведено (user0_.user_create_date как datetime) = '16.04.2020 00: 00: 00.000 «Интересно, что этот запрос не работает, когда я запускаю его в MySQl окне запроса: (Код ошибки: 1525. Неверное значение DATETIME: '04 / 16/2020 00: 00: 00.000 ')
Когда я запускаю в MySQl окне запроса:
SELECT * from users
where cast(user_create_date as date) = '2020-04-16'
, я получаю соответствующую строку. Итак, как мне настроить Критерии для отправки
.... where cast(user_create_date as date) = '2020-04-16'
Теперь, если я пытаюсь отправить:
return criteriaBuilder.equal(root.get(fieldName).as(Date.class), timeValue)
Я получаю исключение