2017-11-15 2 views
0

In Orakel für Informatica verwende ich die Bedingung to_char(hiredate, 'YYYY')=1981 und es zeigt mir alle 1981 Mitarbeiter, wenn ich 1981 und 1982 Mitarbeiter zusammen sehen möchte, welcher Code erforderlich ist?Wählen Sie zwei verschiedene Jahre beigetretene Mitarbeiter aus Tabelle

+0

als beiseite: da die rechte Seite wird eine Zeichenfolge sein, don vergleiche es mit einer Zahl (1981); vergleiche es mit einem String (''1981''). – mathguy

Antwort

0

könnten Sie eine Klausel verwenden

where to_char(hiredate, 'YYYY') IN ('1981', '1982') 
1

für eine Set-Säule Jahre auf Datum

Abfragen Man könnte eine Bedingung schaffen, in dem Sie die hiredate als char werfen könnte und sucht eine Satz von Jahren wie folgt:

SELECT 
    * 
FROM 
    emp 
WHERE 
    TO_CHAR(hiredate,'YYYY') in ('1981', '1982') 
    ; 

Dies funktioniert für eine kleine Reihe von Aufzeichnungen fai sehr gut.

Für eine größere, nicht-triviale Menge von Datensätzen, vor allem wenn es vielleicht ein Index für die DATE-Spalte, die ich persönlich eine Bedingung für das Datum selbst wählen würde:

SELECT 
    * 
FROM 
    emp 
WHERE 
    hiredate >= TO_DATE('01-JAN-1981','DD-MON-YYYY') 
    AND hiredate < TO_DATE('01-JAN-1983','DD-MON-YYYY') 
    ; 

Hier stelle ich sicher, ich erfassen alle hiredate Werte im Jahr 1981 von dem >= Operator und ich erhalte alle 1982 Datensätze durch die Angabe, dass die hiredate als den erste Tag weniger im Jahr 1983

Verwandte Themen