Formatierung Datum für Postgresql

Habe ich Folgendes

DateFormat dformat = new SimpleDateFormat("yyyy-M-d");
            dformat.setLenient(false);
            Date cin = dformat.parse(cinDate);

und die sql-Funktion

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;

Datum-format für die postgresql ist standardmäßig voreingestellt (default)

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)
);

und ich versuche, um ein Datum zu analysieren, in der Funktion, so dass es zurückgeben kann, eine Tabelle für mich, ich scheine in das Thema der Datums-Formatierung (das ist, warum ich glaube, ich bin immer dieser Fehler)

org.postgresql.util.PSQLException: ERROR: syntax error at or near "Feb"

Also ich Frage mich, wie würde ich dieses problem beheben, ich weiß nicht, wie das Datum zu formatieren, richtig

EDIT:

Rufe ich die Abfrage wie diese

           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();
            }

also ich denke der Fehler kommt, weil die Art und Weise I-format das Datum ist falsch und postgres nicht Lesen Sie

  • Es ist nicht klar, warum Sie brauchen, um das Parsen oder die Formatierung in den ersten Platz. Woher kommt der input kommen, und wie rufst du die Funktion?
  • Diese Aussage: .. where r.id not in (select * from ... ) ist ungültiges SQL. Sie müssen wählen Sie eine einzelne Spalte in der sub-select.
  • guter Punkt, hatte ich nicht wirklich Lesen Sie die details der Abfrage selbst. Ich habe den Eindruck, etwas könnte besser gemacht werden, ohne die Funktion zu.
InformationsquelleAutor SNpn | 2012-05-05
Schreibe einen Kommentar