Ergebnis 1 bis 5 von 5

Thema: Date als Parameter funktioniert nicht

  1. #1
    samo80 ist offline Neuer Benutzer
    Registriert seit
    16.08.2010
    Beiträge
    6

    Standard Date als Parameter funktioniert nicht

    Hallo Forum

    ich habe eine Funktion geschrieben, bei der ich mit Hilfe eines Datums auf meine Werte in der Tabelle zugreifen möchte. Die Funktion sieht so aus:
    CREATE OR REPLACE FUNCTION tissue.get_system_log_entry_by_date
    (
    requested_date date
    )
    RETURNS TABLE
    (
    log_id bigint,
    out_date date,
    out_time time WITHOUT TIME ZONE,
    module_id varchar,
    log_level varchar,
    message varchar
    )
    AS
    $$
    begin
    RETURN QUERY
    SELECT *
    from tissue.logfiles_system as ls
    where ls._date = requested_date;
    end
    $$
    LANGUAGE 'plpgsql'
    VOLATILE
    CALLED ON NULL INPUT
    SECURITY INVOKER;

    Nun habe ich das Problem, auch wenn ich ein gültiges Datum als Parameter angebe, dass ich keine Rückgabewerte bekomme. Ich bekomme auch keine Fehlermeldung. Nur die Spalten meiner Tabelle sind leer. Das Datum ist in der Tabelle als z.B. 12.08.2010 abgelegt. Als Parameter übergebe ich es dann als '12.08.2010'. Wenn ich das gleiche mit Time mache (z.B. '12:58:43') dann funktioniert das ganze und ich bekomme die Werte aus der Tabelle zurückgeliefert. Bei Date aber nicht. Wo liegt da der Fehler?

    Vielen Dank für eure Hilfe! Ach so, ich arbeite mit PostgreSQL 8.4

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von samo80 Beitrag anzeigen
    Hallo Forum

    i
    Nun habe ich das Problem, auch wenn ich ein gültiges Datum als Parameter angebe, dass ich keine Rückgabewerte bekomme. Ich bekomme auch keine Fehlermeldung. Nur die Spalten meiner Tabelle sind leer. Das Datum ist in der Tabelle als z.B. 12.08.2010 abgelegt. Als Parameter übergebe ich es dann als '12.08.2010'. Wenn ich das gleiche mit Time mache (z.B. '12:58:43') dann funktioniert das ganze und ich bekomme die Werte aus der Tabelle zurückgeliefert. Bei Date aber nicht. Wo liegt da der Fehler?

    Vielen Dank für eure Hilfe! Ach so, ich arbeite mit PostgreSQL 8.4
    Wilde Vermutung: internationales (amerikanisches) versus deutsches Datumsformat?

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    samo80 ist offline Neuer Benutzer
    Registriert seit
    16.08.2010
    Beiträge
    6

    Standard

    Dummer Fehler, du hattest Recht. Wenn ich das Datum im amerikanischen Format eingebe '2010-08-12' dann akzeptiert das die DB. Kann ich das Datumsformat auch auf 12.08.2010 ändern? Also das die Datenbank dieses Format akzeptiert?

  4. #4
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von samo80 Beitrag anzeigen
    Dummer Fehler, du hattest Recht. Wenn ich das Datum im amerikanischen Format eingebe '2010-08-12' dann akzeptiert das die DB. Kann ich das Datumsformat auch auf 12.08.2010 ändern? Also das die Datenbank dieses Format akzeptiert?
    to_date() ist Dein Freund.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  5. #5
    castorp ist offline Erfahrener Benutzer
    Registriert seit
    27.06.2009
    Beiträge
    493

    Standard

    Zitat Zitat von samo80 Beitrag anzeigen
    Wenn ich das Datum im amerikanischen Format eingebe '2010-08-12'
    Nur so nebenbei: dass ist das ISO Format, das amerikanische (oder englische) Format is 12-08-2010.

    Ich habe mir angewöhnt ein Datum immer als ISO Literal anzugeben: DATE '2010-08-12' (beachte das DATE vor der Zeichenkette)
    Das ist standardisiert und klappt mit fast jeder Datenbank.
    Ansonsten eben die to_date() verwenden wie akretschmer gesagt hat.
    A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum