Anzeige-name des Mitarbeiters, die angestellt wurden am Sonntag des Monat Oktober
Meine übung sagt zum display-Namen der Mitarbeiter, die angestellt wurden am Sonntag in den Monat Oktober
select ename,hiredate from emp where
to_char(hiredate,'MON')='OCTOBER' AND to_char(hiredate,'DAY')='SUNDAY'
Auch
Anzeige aller Mitarbeiter, die eingestellt sind, in das Letzte Viertel.
In oracle, die wir nicht verwenden qq so, wie Sie schreiben, die eine Abfrage für diese?
- In sql können wir verwenden qq in datepart. Aber es gibt keine solche Methode in der oracle...richtig?
- "In oracle können wir nicht verwenden, qq, so wie man eine Abfrage schreiben, für dies?" Was bedeutet
qq
bedeuten? Wenn du meinst QUARTAL, dann natürlich Sie es tun könnten. Aber deine Anforderung scheint nichts zu tun mit der vierteljährlichen Ausgabe. Auch mit Tag-name, beachten Sie, dass TO_CHAR ist NLS-abhängigen. Wenn Sie nicht angeben derNLS_DATE_LANGUAGE
wäre es nicht für Menschen, die mit einer anderenNLS_DATE_LANGUAGE
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den MON-Datum-format ist der abgekürzte name des Monats, in der aktuellen sesison die NLS Datum Sprache. Sie können vergleichen, die Abkürzung mit den short-name, oder der vollständige name des Monats:
oder
Den "FM" - format modifier hält es das hinzufügen von Leerzeichen, und das tut er standardmäßig bis zu der Länge der längsten möglichen Wert. Wenn Sie das nicht tun, haben Sie entweder zu pad Ihre festen Wert, oder kürzen Sie das Ergebnis. (Beachten Sie, dass für einige Sprachen, die Abkürzungen benötigen FM-Vergleich auch, wie auch Ihre Länge kann sich ändern, nicht in Englisch, da die MON-und DY-Werte sind alle 3 Charaktere; aber die französischen Monats-Abkürzungen, zum Beispiel, können Sie 3 oder 4 Zeichen).
Es in der Regel besser zu verwenden Monat zahlen für dieses aber:
Bekommen, die Sie im Oktober in jedem Jahr, wenn Sie wollen, in diesem Oktober können Sie das Jahr:
Oder wenn im vorigen Monat des Laufenden Jahres, die Sie verwenden können:
Das gleiche passiert mit der Tag; der TAG-format-pads, um den längsten Tag-name zugewiesen, so müssen Sie:
oder
Können Sie Tag zahlen Sie hier, aber Sie sind locale-abhängigen auch. Wenn Sie gong-Namen zu verwenden, ist es sicherer, um die Sprache anzugeben:
Oracle hat die Q-format Datum-Modell, fest-Kalender-Monate - also Januar-März, ist Q1. Sie Mai wollen Bankenzentrum; oder wollen die letzten drei Monate; oder etwas anderes.
Erhalten Sie die Viertel mit TO_CHAR('Q'). So Holen Sie sich das Quartal von DATEPART und berechnen Sie die Vorherige:
Als bis Sonntag im Oktober, dein query sieht gut aus, aber Sie verlassen sich auf Englisch-Einstellungen für die Datenbank. Besser mit Nummern, wo möglich, oder geben Sie die verwendete Sprache:
EDIT: gerade lese ich deine Frage nochmal und kommen zu denken: Was bedeutet "Letzte" Viertel bedeuten? Das Quartal, bevor Sie diese, wie ich annahm, oder Quartal 4 des Jahres? Das wäre einfach
where to_char(sysdate, 'q') = '4'
.EDIT 2: Hatte zu ändern, 'TAG' zu 'FMDAY'. Siehe Alex Poole ' s Antwort für eine Erklärung.
wissen, ob das Einstellungsdatum ist im letzten Quartal konnte man prüfen, ob der Monat größer oder gleich
10
Für deine andere Frage, wie statet hier,
MON
Gegenzug eine abgekürzte name des Monats. Dies führt dazu, dassOCTOBER
nicht die Ausgabe vonMON
. Sie sind entweder fürMONTH
in Ihremto_char
oder würden Sie wollen, um es zu vergleichen, umOCT
statt. Als alternative könnten Sie wahrscheinlich tun Sie es wie diese. Wenn dem so ist halten @ThrostenKettners Kommentar in den Sinn.