Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Auf nicht existierende Spalten filtern

Dieses Thema im Forum "Oracle" wurde erstellt von AnNeKa, 19 Oktober 2015.

  1. AnNeKa

    AnNeKa Benutzer

    Ich habe hier ein Übungsaufgabe, bei der alle Angestellten angegeben werden sollen, welche an einem Montag eingestellt wurden. Existent sind die Spalten: FIRST_NAME, LAST_NAME und HIRE_DATE.
    Unser Ansatz:

    select first_name, last_name, to_char(to_date(HIRE_DATE,'DD.MM.YYYY'),'day') from EMPLOYEES
    WHERE to_char(to_date(HIRE_DATE,'DD.MM.YYYY'),'day') ='montag';

    Mit der ersten Zeile werden alle Namen sowie das Datum der Einstellung als WOCHENTAG ausgegeben, aber das Filtern auf die neu entstandene Spalte funktioniert so nicht, denn dann sind alle Zeilen leer. Aber es gibt mindestens 5 Arbeitnehmer, die am Montag eingestellt wurden.
    Tipps?

    Vielen Dank.
     
  2. Distrilec

    Distrilec Datenbank-Guru

    Code:
    SQL> Select name, value From v$parameter Where name = 'nls_date_language';
    NAME                                                                             VALUE
    -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
    nls_date_language                                                              
    
    SQL> Select to_char(sysdate, 'day') from dual;
    TO_CHAR(SYSDATE,'DAY')
    ----------------------
    monday
    
    SQL> Alter Session Set nls_date_language = 'GERMAN';
    Session altered
    
    SQL> Select to_char(sysdate, 'day') From dual;
    TO_CHAR(SYSDATE,'DAY')
    ----------------------
    montag
    
    SQL> 
    Spracheinstellungen überprüft? :)

    Edit: Davon abgesehen solltet ihr die Übungsaufgaben wechseln... Wenn man in der Übung ein Datum als Varchar ablegt, weiß man schon das der Schreiberling definitiv keine Übungsaufgaben schreiben sollte :)
     
  3. AnNeKa

    AnNeKa Benutzer

    Danke für deine Antwort, Distrilec. Das ändern der Spache hat leider nicht geholfen.
    Auf den Verfasser der Aufgaben, haben wir leider keinen Einfluss. :(
     
  4. Distrilec

    Distrilec Datenbank-Guru

    Was liefert denn folgendes Statement?
    Code:
    Select first_name
          ,last_name
          ,to_char(to_date(hire_date, 'DD.MM.YYYY'), 'day')
    From   employees
    Wird denn schon ein 'montag' geliefert? Dann sollte das auch funktionieren...
     
    Walter gefällt das.
  5. AnNeKa

    AnNeKa Benutzer

    upload_2015-10-19_14-46-31.png

    Den selektierten Befehl habe ich ausgeführt und das Resultat sieht man hier. Unsere Where-Clause funktioniert trotzdem nicht. :/
     
  6. Distrilec

    Distrilec Datenbank-Guru

    Code:
    Select first_name
          ,last_name
          ,to_char(to_date(hire_date, 'DD.MM.YYYY'), 'day')
    From   employees
    Where to_char(to_date(hire_date, 'DD.MM.YYYY'), 'day') = 'montag'
    Das muss dann auch funktionieren.
     
  7. AnNeKa

    AnNeKa Benutzer

    Tadaaaa:
    upload_2015-10-19_14-55-40.png
     
  8. Chuky666

    Chuky666 Datenbank-Guru

    Hi,

    "DAY, day, Day: Tag der Woche in Langschrift (UPPER, lower, Capital) - z.B.: MONTAG, montag, Montag (Bei Spracheinstellung deutsch)"

    Bin zwar nicht im Oracle-Umfeld zu Hause aber ich würde jetzt mal aus dem Bauch heraus mal vermuten das nach deiner Spracheinstellung "montag" nicht mehr vorkommt sondern "Montag"?

    Grüße
     
  9. ukulele

    ukulele Datenbank-Guru

    Oder das Ausgangsdatum ist gar nicht DD.MM.JJJJ sondern MM.DD.JJJJ oder noch mit anderen Zeichen...
     
  10. AnNeKa

    AnNeKa Benutzer

    Hallo Chuky666, bin jetzt die Varianten DAY,day und Day durchgegangen. Funktioniert leider auch nicht.
    Hallo ukulele, habe anhand des Ausgangsdatums korrigiert, aber es ist immernoch das gleiche.

    Trotzdem Danke euch beiden.
     
  11. Chuky666

    Chuky666 Datenbank-Guru

    mhh.. interessant...

    Versuch mal bitte das hier und poste mal das Ergebnis:

    Select first_name
    ,last_name
    ,CONCAT(to_char(to_date(hire_date, 'DD.MM.YYYY'), 'day') , '|') as erg
    From employees
     
  12. AnNeKa

    AnNeKa Benutzer

  13. Chuky666

    Chuky666 Datenbank-Guru

    ok... versuchs mal mit einem LIKE 'montag%' ( hoffe das funktioniert so in Oracle?!)

    :)
     
  14. AnNeKa

    AnNeKa Benutzer

    WAHNSINN! Es hat tatsächlich funktioniert!
    Vielen, vielen Dank!

    upload_2015-10-19_16-9-2.png
     
  15. Distrilec

    Distrilec Datenbank-Guru

    Code:
    Select first_name
          ,last_name
          ,to_char(to_date(hire_date, 'DD.MM.YYYY'), 'FMday')
    From   employees
    Where to_char(to_date(hire_date, 'DD.MM.YYYY'), 'FMday') = 'montag'
    Das löst das Problem... Und ist etwas effizienter als like :)
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden