Veröffentlicht 5. Mai 201015 j 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.
5. Mai 201015 j 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
6. Mai 201015 j 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;
6. Mai 201015 j Warum so kompliziert? Weil bei meiner Variante ein Index auf ab_datum verwendet werden kann und bei Deiner nicht. Dim
6. Mai 201015 j 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;
6. Mai 201015 j 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 201015 j von alobar
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.