jdbctemplate - queryForList - Передача даты? - PullRequest
1 голос
/ 09 апреля 2019

Я пишу небольшое весеннее приложение, которое имеет функциональность jdbc в контексте следующего кода ...

У меня есть следующая Java для настройки строки запроса SQL:

    String sql =
            "SELECT " +
                    "    a.Id, " +
                    "    a.USER_ID ", " +
                    "    a.LAST_UPDATED " +
                    "from " +
                    "    Schema.AwesomeTable a " +
                    "where " +
                    "    a.LAST_UPDATED >= ?";

и я пытаюсь использовать объект даты (давайте просто представим, что я использую текущую дату, чтобы этот вопрос оставался кратким):

Date myDate = new Date(); // This is a java.util.Date

, и я вызываю запрос следующим образом:

List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql, new Object[]{myDate});

Когда я запускаю это - я получаю эту ошибку:

2019-04-08 23:17:58 - Setting SQL statement parameter value: column index 1, parameter value [Tue Apr 08 23:17:58 CDT 2019], value class [java.util.Date], SQL type unknown

Я мог бы действительно использовать некоторую помощь - я везде гуглил, и я нашел НЕКОТОРОЙ информацию, ноЯ не видел ничего такого, что мне казалось бы понятным.

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Вы не можете напрямую использовать myDate переменную типа java.util.Date в вашем sql-запросе

Date myDate = new Date(); // This is a java.util.Date

Вы должны преобразовать его в java.sql.Date тип, который вы можете сделать следующим образом:

java.sql.Date sqlDate = new java.sql.Date(myDate.getTime());

, после чего вы можете вызвать запрос как:

List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql,sqlDate);

, который будет работать как положено.

0 голосов
/ 09 апреля 2019

Вы можете заключить свой параметр в java.sql.Date или использовать:

import java.util.Date;
import java.time.LocalDate;

LocalDate dateTime = // some date here
Date startDate = Date.from(dateTime.atStartOfDay(ZoneId.systemDefault()).toInstant());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...