🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Datensätze abfragen, die älter als $INTERVALL sind

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
scientific
Beiträge: 131
Registriert: Do 25. Apr 2013, 17:27

Datensätze abfragen, die älter als $INTERVALL sind

Beitrag von scientific » Do 25. Apr 2013, 17:34

Hi!

Ich setze bei jeder Änderung eines Datensatzes einen neuen Timestamp in das Feld "Timestamp".
Wenn ich dann die Datenbank abfrage, möchte ich nur Datensätze ausgegeben haben, die älter als $INTERVALL also z.B. 2 Stunden sind.

Ich bin leider nicht so gut in SQL und hab keine Ahnung, wie ich das realisieren soll...

SELECT * FROM "Tabelle" WHERE "Timestamp" > now() - 2 HOURS

so in etwa hab ich mir das vorgestellt. Aber ich komm nicht zur Lösung... Eines hab ich rausgefunden: So geht es nicht.

Wie kann ich so eine Abfrage richtig machen?

lg scientific

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Datensätze abfragen, die älter als $INTERVALL sind

Beitrag von F3K Total » Do 25. Apr 2013, 19:52

Moin,
das geht z.B so

Code: Alles auswählen

SELECT *  FROM "Tabelle" where DATEDIFF('mi',"Timestamp",CURRENT_TIMESTAMP) > 120
für Minuten, sonst gibt es noch:

Code: Alles auswählen

'yy' -> Jahre
'mm' -> Monate
'dd' -> Tage
'hh' -> Stunden
'mi' -> Minuten
'ss' -> Sekunden
'ms' -> Millisekunden
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

scientific
Beiträge: 131
Registriert: Do 25. Apr 2013, 17:27

Re: Datensätze abfragen, die älter als $INTERVALL sind

Beitrag von scientific » Fr 26. Apr 2013, 02:13

vielen Danke!!!

lg scientific

scientific
Beiträge: 131
Registriert: Do 25. Apr 2013, 17:27

Re: Datensätze abfragen, die älter als $INTERVALL sind

Beitrag von scientific » Fr 26. Apr 2013, 11:47

Und dann noch eine Frage... irgendwie finde ich dazu auch nix brauchbares...

Wie schreibe ich geschachtelte bzw. logisch verknüpfte Abfragen in SQL?

SELECT * FROM "Tabelle1"
WHERE "Abschlussgrund" = 'WV' AND
"Wiedervorlage" < NOW( )
OR ("Abschlussgrund" = 'NE' AND DATEDIFF( 'mi', "Timestamp", CURRENT_TIMESTAMP ) > 120 )
OR "Abschlussgrund" IS NULL
OR "Abschlussgrund" LIKE ''
ORDER BY "Abschlussgrund" DESC, "Wiedervorlage" ASC

So funktioniert das nicht.

Ich würde gerne alle Datensätze mit "Abschlussgrund" = 'NE' ausgeben, welche aber älter als 2 Stunden sind. Ebenso alle die ein leeres Feld "Abschlussgrund" und jene die "WV" als Abschlussgrund haben...

wie mache ich das richtig?

lg scientific

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Datensätze abfragen, die älter als $INTERVALL sind

Beitrag von RobertG » Fr 26. Apr 2013, 17:00

Hallo scientific,
scientific hat geschrieben: Wie schreibe ich geschachtelte bzw. logisch verknüpfte Abfragen in SQL?

Code: Alles auswählen

SELECT * FROM "Tabelle1" 
WHERE "Abschlussgrund" = 'WV' AND 
"Wiedervorlage" < NOW( ) 
OR ("Abschlussgrund" = 'NE' AND DATEDIFF( 'mi', "Timestamp", CURRENT_TIMESTAMP ) > 120 ) 
OR "Abschlussgrund" IS NULL 
OR "Abschlussgrund" LIKE '' 
ORDER BY "Abschlussgrund" DESC, "Wiedervorlage" ASC
So funktioniert das nicht.
Ich würde gerne alle Datensätze mit "Abschlussgrund" = 'NE' ausgeben, welche aber älter als 2 Stunden sind.

Code: Alles auswählen

SELECT * FROM "Tabelle1" 
WHERE ("Abschlussgrund" = 'NE' AND DATEDIFF( 'mi', "Timestamp", CURRENT_TIMESTAMP ) > 120 ) 
ORDER BY "Abschlussgrund" DESC, "Wiedervorlage" ASC
scientific hat geschrieben: Ebenso alle die ein leeres Feld "Abschlussgrund"

Code: Alles auswählen

SELECT * FROM "Tabelle1" 
WHERE ("Abschlussgrund" = 'NE' AND DATEDIFF( 'mi', "Timestamp", CURRENT_TIMESTAMP ) > 120 ) 
OR "Abschlussgrund" IS NULL 
ORDER BY "Abschlussgrund" DESC, "Wiedervorlage" ASC
scientific hat geschrieben: und jene die "WV" als Abschlussgrund haben...

Code: Alles auswählen

SELECT * FROM "Tabelle1" 
WHERE "Abschlussgrund" = 'WV' 
OR ("Abschlussgrund" = 'NE' AND DATEDIFF( 'mi', "Timestamp", CURRENT_TIMESTAMP ) > 120 ) 
OR "Abschlussgrund" IS NULL 
ORDER BY "Abschlussgrund" DESC, "Wiedervorlage" ASC
Das bildet jetzt Deine Anforderungen ab. Was Dabei "Abschlussgrund" Like " soll bleibt mir schleierhaft. "Wiedervorlage" < NOW() hast Du auch nicht in Deinen Forderungen aufgelistet. Soll das nur für 'WV' gelten oder soll das für alle Teilbereiche gelten? Je nachdem musst Du die Bedingungen in Klammern zusammenfassen.

Vielleicht solltest Du wirklich einmal das Base-Handbuch zu Hilfe nehmen: http://de.libreoffice.org/hilfe-kontakt/handbuecher/ - etwas nach unten scrollen.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten