SuperMarios
User
-
Registriert
-
Letzter Besuch
Reputationsaktivität
-
Mein Fail =D handelt sich ja um KW
-
SELECT ... FROM ... WHERE AufnahmeDatum < DATE '2020-03-01' AND EntlassDatum > DATE '2020-02-01' Es werden die weggefiltert, die nach dem Februar 2020 aufgenommen und die, die vor dem Februar 2020 entlassen worden sind. Übrig bleiben die, die in den Betten lagen.
Wenn es mit DATE nicht gemacht werden darf:
SELECT ... FROM ... WHERE (MONTH(AufnahmeDatum) < 3 AND YEAR(AufnahmeDatum) = 2020) AND (MONTH(EntlassDatum) >= 2 AND YEAR(EntlassDatum) = 2020)
-
Ein kleiner Fehler hat sich noch eingeschlichen: Beim Aufnahmedatum sollte das Jahr kleiner gleich 2020 sein und nicht nur gleich 2020.
Ich glaube DATE benötigt es im klassischen SQL gar nicht. Lediglich die Formatierung muss passen. D.h. die Abfrage müsste lauten:
SELECT ... FROM ... WHERE AufnahmeDatum <'2020-03-01' AND EntlassDatum >= '2020-02-01' Nachzulesen hier: https://www.w3schools.com/sql/sql_dates.asp
-
Stimmt. 😅
Auch das stimmt. Bin zu sehr Oracle geschädigt. Da schreibt man es mit DATE. 😅
-
Letzendlich ist alles eine Zahl.
Ich bin mir jetzt nicht so ganz sicher, ob es zum SQL-Standard gehört aber für gewöhnlich verwenden die RDBMS das ISO 8601-Fomat. Also YYYY-MM-DD. Für andere Formate muss man eine Konvertierung vornehmen. In Oracle DB z.B. die TO_DATE()-Funktion.
Wie das jetzt in der Abschlussprüfung bewertet wird, kann ich nicht sagen. Ist vermutlich auch unterschiedlich.
-
SuperMarios hat eine Reaktion von allesweg in Frage zu SQL-Aufgabe WHERE DatumsangabenDanke für die Rückmeldung, nun denke ich nochmal...
Wir brauchen alle Patienten, welche im Februar 2020 ein Zimmer hatten. Es kann sein, dass jemand im Januar 2020 in die Klinik kommt und am 01. Februar 2020 entlassen wird, dann war er auch im Februar da. Oder das jemand am 29. Februar 2020 in die Klinik kommt und egal wann entlassen wird.
Also...
Wenn Aufnahmedatum im Februar 2020 ist (Monat Februar und Jahr 2020)
ODER
Wenn Entlassdatum im Februar 2020 ist (Monat Februar und Jahr 2020)
ODER
Wenn Aufnahmedatum vor dem Februar 2020 ist UND Entlassdatum nach dem Februar 2020
dann hatte der Patient ein Zimmer, oder?
-
Ist das nicht diese Aufgabe?
-
@Tobi_8 und was ist dann bei der Lösung mit Patienten, die z.B. am 1.1.2020 gekommen sind und am 31.4.2020 entlassen wurden?
-
welches DBMS? Postgresql kennt netterweise ein "overlaps" für Date-Ranges. 😉
-
Im Februar anwesend heißt vor dem 1.3.2020 aufgenommen und nach dem 31.1.2020 entlassen.
-
Eventuell mit LIKE ?
WHERE PatientenAufnahmeDatum LIKE '%.02.2021' AND PatientenEntlassDatum LIKE '%.02.2021' --> Patienten die im Februar aufgenommen und wieder entlassen wurden
-
Wie wäre es, wenn du die vollständige Aufgabenstellung inklusive vollständiger Tabelle postest? Dann können wir auch auf passende Lösungswege hinweisen und müssen nicht rätselraten.
-
Das! Wobei eben beachtet werden muss, dass es sich um zwei Datumsfelder handelt.
Aber so wäre es vermutlich am simpelsten.
Die Abfrage kann z.B. aber auch sein, dass ENTWEDER das Aufnahmedatum im Februar 2020 (Also das Jahr 2020 und der Monat Februar ist) liegt ODER ( das Aufnahmedatum vor dem 1.2.2020 liegt UND das Entlassungsdatum nach dem 31.1.2020 liegt)
So würde ich es zumindest machen! Bei SQL ist es aber wie bei vielen anderen Dingen auch: Viele Wege führen zum Ziel!