alobar Geschrieben 5. Mai 2010 Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 5. Mai 2010 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Toothrot Geschrieben 6. Mai 2010 Teilen 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; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 6. Mai 2010 Teilen Geschrieben 6. Mai 2010 Warum so kompliziert? Weil bei meiner Variante ein Index auf ab_datum verwendet werden kann und bei Deiner nicht. Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Toothrot Geschrieben 6. Mai 2010 Teilen 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; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
alobar Geschrieben 6. Mai 2010 Autor Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.