2016-10-13 3 views
-1

ich eine Funktion haben, die den Tag zurückkehren sollte, wenn ein Datum übergeben wird:Erhalten Tag der Woche ab dem Datum nicht korrekt SQL funktioniert

FUNCTION f_dayofweek(pd_date DATE) RETURN VARCHAR2 IS 
    ps_weekdayname VARCHAR2(9); 
    BEGIN 
    ps_weekdayname := to_char(to_date(pd_date,'dd/mm/yyyy'), 'DAY'); 
    RETURN ps_weekdayname; 
    END; 

So weit so gut, aber wenn ich übergeben ein Datum an die Funktion:

SELECT GENERAL_FUNCTIONS.F_DAYOFWEEK('13-OCT-2016') FROM dual; 

, das die folgenden Tag zurückgeben sollte:

DONNERSTAG

Doch statt zurück:

DIENSTAG

Ich versuchte es auch mit einem anderen Datum:

SELECT GENERAL_FUNCTIONS.F_DAYOFWEEK('07-OCT-2016') FROM dual;

Welche zurückkehren sollten;

Freitag

Doch statt zurück:

Mittwoch

So scheint es, dass das Datum immer zwei Tage hinter ist. Irgendwelche Vorschläge?

+0

Warum übergeben Sie ein "Datum" als Zeichenfolge? Verwenden Sie die Typen korrekt in der Datenbank, und Sie erhalten die richtige Antwort. –

+0

Welche DBMS verwenden Sie? (Dieser Code sieht nicht wie ANSI SQL aus.) – jarlh

+0

Ich benutze Entwickler 4 –

Antwort

0

Sie erwarten Datum im Format tt/mm/jjjj

to_date(pd_date,'dd/mm/yyyy') 

aber rufen Funktion mit dd-mon-yyyy:

SELECT GENERAL_FUNCTIONS.F_DAYOFWEEK('13-OCT-2016') FROM dual; 

Bitte entweder richtige Format verwenden oder als Gordon schrieb Verwendung Datumsart .

Verwandte Themen