Auf nicht existierende Spalten filtern

AnNeKa

Benutzer
Beiträge
7
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.
 
Werbung:
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 :)
 
Danke für deine Antwort, Distrilec. Das ändern der Spache hat leider nicht geholfen.
Auf den Verfasser der Aufgaben, haben wir leider keinen Einfluss. :(
 
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...
 
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.
 
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
 
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.
 
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
 
Werbung:
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 :)
 
Zurück
Oben