PostgreSQL ruft Elemente der letzten 12 Stunden ab

Lesezeit: 2 Minuten

Benutzer-Avatar
malisit

Ich habe die folgende Abfrage, um das zu bekommen, was ich in der PHP-Datei haben möchte, es erledigt seine Aufgabe außer der WHERE Teil. Ich brauche Gegenstände, die haben date_time1 Spalte für die letzten 12 Stunden.

SELECT p.*, t.* 
FROM posts AS p 
LEFT JOIN posted_tweets AS t 
ON p.a_id = t.p_id
WHERE p.date_time1 >= now() AND t.date_time =
( 
    SELECT MAX(date_time) 
    FROM posted_tweets AS t2 
    WHERE t2.p_id = t.p_id
)
    OR t.date_time IS NULL 

Wie genau soll ich editieren p.date_time1 >= now() Teil, um mein Ziel zu erreichen? Vielen Dank.

Benutzer-Avatar
Tim Biegeleisen

Folgendes sollte sich auf alle Zeiten beschränken, die in den letzten 12 Stunden aufgetreten sind:

w.date_time1 >= (NOW() - INTERVAL '12 hours' )

Prüfen hier für eine gute Diskussion über den Umgang mit datetime in Postgresql, zusammen mit Beispielen.

  • Es hat folgenden Fehler ausgelöst: Query failed: ERROR: syntax error at or near ""12 hour""

    – malisit

    1. September 2015 um 4:20 Uhr

  • Es gab dasselbe mit dem ‘s’ Query failed: ERROR: syntax error at or near ""12 hours""

    – malisit

    1. September 2015 um 4:22 Uhr

  • Ich denke, das Problem liegt in Ihrer Frage, nicht in meiner Antwort.

    – Tim Biegeleisen

    1. September 2015 um 4:23 Uhr

  • Ich habe es jetzt herausgefunden, es ging um den Unterschied zwischen einfachen und doppelten Anführungszeichen. Es war in Ordnung, bis ich Intervalle hinzufügte, aber es scheint, dass Intervalle mit doppelten Anführungszeichen nicht gut sind. Vielen Dank.

    – malisit

    1. September 2015 um 4:24 Uhr


Benutzer-Avatar
F. Stephen Q

Ersetzen now() mit einer entsprechenden Zeitfunktion aus hier.

EDIT: Das eigentliche Problem war mit den Zitaten; Denken Sie daran, einfache Anführungszeichen in Ihren PostgreSQL-Abfragen zu verwenden.

  • Ich habe einen Syntaxfehler damit: now() - interval "12 hour"auch diese now() - "1 hour"::interval gibt den Fehler von column "12 hour" does not exist. Also, das habe ich schon bei einer kurzen Recherche bei Google gesehen. Es hat nicht geholfen.

    – malisit

    1. September 2015 um 4:19 Uhr

  • Versuchen Sie es mit einfachen Anführungszeichen anstelle von doppelten Anführungszeichen. Wie in “12 Stunden” im Gegensatz zu “12 Stunden”

    – F. Stephen Q

    1. September 2015 um 4:21 Uhr


  • Kein Problem, gerne behilflich

    – F. Stephen Q

    1. September 2015 um 4:25 Uhr

  • @FSQ Im Allgemeinen sollten Sie Ihre Antwort in die eigentliche Antwort einfügen. Durch das Verknüpfen mit der Dokumentation wird Ihre Antwort für jemanden weniger wertvoll, der versucht, die Stack Overflow-Datenbank zur Lösung seines Problems zu verwenden.

    – Tim Biegeleisen

    1. September 2015 um 4:29 Uhr

1091160cookie-checkPostgreSQL ruft Elemente der letzten 12 Stunden ab

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy