私は以下を持っています
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)
);
日付を関数に解析してテーブルを返すことができるようにしようとしていますが、日付の書式設定の問題が発生しているようです(これが、このエラーが発生していると思う理由です)
org.postgresql.util.PSQLException: ERROR: syntax error at or near "Feb"
だから私はこの問題をどのように修正するのだろうと思っていました、私は日付を正しくフォーマットする方法がわかりません
編集:
私はこのようにクエリを呼び出しています
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がそれを読み取れないため、エラーが発生すると思います