У меня есть следующиеФорматирование даты для Postgresql
DateFormat dformat = new SimpleDateFormat("yyyy-M-d");
dformat.setLenient(false);
Date cin = dformat.parse(cinDate);
и функция SQL
create or replace function search(_checkIn date, _checkOut date) returns setof Bookings as $$
declare
r Bookings;
begin
for r in
select * from Bookings
loop
if ((_checkIn between r.checkIn and r.checkOut) or (_checkOut between r.checkIn and r.checkOut)) then
return next r;
end if;
end loop;
return;
end;
$$ language plpgsql;
Формат даты для PostgreSQL является стандартным (по умолчанию)
create table Bookings (
id serial,
status bookingStatus not null,
pricePaid money not null,
firstName text,
lastName text,
address text,
creditCard text,
checkOut date not null,
checkIn date not null,
room integer not null,
extraBed boolean not null default false,
foreign key (room) references Rooms(id),
primary key (id)
);
и я m пытается проанализировать дату в функции, чтобы она могла вернуть мне таблицу, я, похоже, столкнулся с проблемой форматирования даты (вот почему Я думаю, что я получаю эту ошибку)
org.postgresql.util.PSQLException: ERROR: syntax error at or near "Feb"
Так мне было интересно, как бы я исправить эту проблему, я не знаю, как форматировать дату правильно
EDIT:
Я звоню запрос, как этот
try {
String searchQuery = "SELECT * FROM Rooms r where r.id not in (select * from search(" + cin +", " + cout +"))";
PreparedStatement ps = conn.prepareStatement(searchQuery);
rs = ps.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
, так что я думаю, что ошибка происходит, потому как я форматировать дату неправильно и Postgres не будет читать его
Непонятно, зачем вам нужно разбираться или форматировать в первую очередь. Откуда берется вход, и как вы вызываете эту функцию? –
Это утверждение: '.. где r.id not in (select * from ...)' неверно SQL. Вы должны выбрать один столбец в подвыборке. –
@a_horse_with_no_name, хороший момент, я действительно не читал детали самого запроса. Я получаю впечатление, что что-то можно сделать лучше без этой функции. – Bruno