Передача java.sql.Date в sql запрос - PullRequest
1 голос
/ 04 марта 2011

Это часть моего кода

java.sql.Date d1=java.sql.Date.valueOf("2011-03-02"); 
java.sql.Date d2=java.sql.Date.valueOf("2011-03-10"); 
java.sql.Date systemDate=java.sql.Date.valueOf("2011-03-04");

String sql="select id from period where '"+systemDate+"' between '"+d1+"' and '"+d2+"'";

Это мой код. Я хочу получить идентификатор, который попадает между этими датами. Но я не получаю желаемого результата. Я возвращаю все идентификаторы в таблице.

Ответы [ 2 ]

1 голос
/ 04 марта 2011

У вас есть хорошие результаты, когда вы используете другие инструменты SQL (например, pgadmin для PostgreSQL или SQL Developer для Oracle)?

Так что тогда попробуйте использовать PreparedStatement .В вашем случае это будет выглядеть так:

PreparedStatement pstmt = con.prepareStatement("select id from period where ? between ? and ?");
pstmt.setDate(1, systemDate);
pstmt.setDate(2, d1);
pstmt.setDate(3, d2);
0 голосов
/ 17 декабря 2013

Вы не используете поле из своей таблицы для сравнения с диапазоном дат.

То, что вы делаете, проверяет, находится ли 04-03-2011 между 02-03-2011 и 10-03-2011, что верно для каждой записи.

Что вы хотите сделать, это примерно так (при условии, что start_date - это столбец в вашей таблице):

  String sql="select id from period where start_date between '"+d1+"' and '"+d2+"'";

(Также я согласенс ответом выше, что подготовленные операторы являются лучшим способом для построения запросов.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...