alobar Geschrieben 5. Mai 2010 Geschrieben 5. Mai 2010 Hallo, ich muss folgende Aufgabe lösen: Ermitteln Sie das Abflugdatum der Flüge, die nach dem 14. Kalendertag (des Monats) starten, sortiert nach Abflugdatum. Das Ganze soll als SELECT-Anweisung für Oracle Database 10g geschrieben werden. Ausgagstabelle: AB_DATUM 13.11.08 14.11.08 15.11.08 17.11.08 Die Spalte AB_DATUM ist vom Datentyp DATE. Folgender Ansatz steht im Raum: select to_char (AB_DATUM, 'DD.MM.') "AB_DATUM" from abflug order by AB_DATUM; Als Ergebnis erhalte ich folgende Tabelle: AB_DATUM 13.11. 14.11. 15.11. 17.11. Wie kann aber die Aufgabe gelöst werden, dass in der Spalte AB_DATUM nur Flüge berücksichtigt weden, die nach dem 14. Kalendertag (des Monats) starten? Vielen Dank im Voraus.
dr.dimitri Geschrieben 5. Mai 2010 Geschrieben 5. Mai 2010 Du kannst hier einfach Datumsarethmetik verwenden und das dann in eine Betweenabfrage stellen: SELECT TO_CHAR (AB_DATUM, 'DD.MM.') AB_DATUM FROM t WHERE ab_datum BETWEEN TRUNC(ab_datum,'MM')+13 AND TRUNC(add_months(ab_datum,1),'MM')-1 ORDER BY AB_DATUM; Dim
Toothrot Geschrieben 6. Mai 2010 Geschrieben 6. Mai 2010 Warum so kompliziert? SELECT TO_CHAR (AB_DATUM, 'DD.MM.') AB_DATUM FROM t WHERE to_number( to_char(ab_datum, 'dd') ) > 14 ORDER BY AB_DATUM;
dr.dimitri Geschrieben 6. Mai 2010 Geschrieben 6. Mai 2010 Warum so kompliziert? Weil bei meiner Variante ein Index auf ab_datum verwendet werden kann und bei Deiner nicht. Dim
Toothrot Geschrieben 6. Mai 2010 Geschrieben 6. Mai 2010 Stimmt. Es sei denn, man baut sich einen function-based index. Folgendes sollte aber auch reichen, nicht? SELECT TO_CHAR (AB_DATUM, 'DD.MM.') AB_DATUM FROM t WHERE ab_datum > TRUNC(ab_datum,'MM')+13 ORDER BY AB_DATUM;
alobar Geschrieben 6. Mai 2010 Autor Geschrieben 6. Mai 2010 (bearbeitet) Vielen Dank für die schnelle Hilfe und die verschiedenen Lösungsansätze. In meinem Fall reicht ein Code ohne Index aus. Bearbeitet 6. Mai 2010 von alobar
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden