Zum Inhalt springen

Sql


LordPalme

Empfohlene Beiträge

Hi Jungs ,

ich möchte in sql eine Funktion schreiben die mit die monate als name ausgibt

bis jetzt habe ich es so geschreiben :

DELIMITER //

CREATE FUNCTION monatsname(Monat DATE)

RETURNS VARCHAR(15)

BEGIN

CASE monate(monat)

WHEN MONTH(CURDATE()) = 1 THEN

RETURN "Januar";

nun möchte ich diesen text nicht 12 mal schreiben sondern mit einer schleife lösen könnt ihr mir da wohl helfen .

LG LordPalme

Bearbeitet von LordPalme
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja genau sowas habe ich mir gedacht es könnte eventuell nur noch Problem mit den Monatsnamen geben da ich die ja erst in ein Array packen muss und dann den passenden Index ansprechen um die richtige Ausgabe zu bekommen .

Oder bin ich da ganz auf dem Holzweg ??

Danke erstmal für deine Hilfe :-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

hey..

kannst ja auch mal hier n paar möglichkeiten anschauen...

Convert Month Number to Month Name Function in SQL - Stack Overflow

ich denke du hast ne tabelle mit na spalte wo sämtliche monatsnr. drin sin, oder?

Dann musste da mit keinem array arbeite. Aber wer weiß, vll. bin ich grad aufm Holzweg :D

..hier wird sicher noch jemand sein, der mehr Plan von SQL hat als ich ^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also..find ich schon etwas diskriminierend. Wusste nicht, dass hier keine jungen Fräuleins unterwegs sein dürfen :(

So war das nicht gemeint :-) wohlte nur nicht soviel schreiben .

Also wir haben eine aufgebe bekommen wo wir eine Funktion schreiben sollten die die Monatsnamen ausgibt , das habe ich erstmal so umgesetzt :

DELIMITER //

CREATE FUNCTION monatsname(Monat DATE)

RETURNS VARCHAR(15)

BEGIN

CASE monate(monat)

WHEN MONTH(CURDATE()) = 1 THEN

RETURN 'Januar';

WHEN MONTH(CURDATE()) = 2 THEN

RETURN 'Februar';

WHEN MONTH(CURDATE()) = 3 THEN

RETURN 'März';

WHEN MONTH(CURDATE()) = 4 THEN

RETURN 'April';

WHEN MONTH(CURDATE()) = 5 THEN

RETURN 'Mai';

WHEN MONTH(CURDATE()) = 6 THEN

RETURN 'Juni';

WHEN MONTH(CURDATE()) = 7 THEN

RETURN 'Juli';

WHEN MONTH(CURDATE()) = 8 THEN

RETURN 'August';

WHEN MONTH(CURDATE()) = 9 THEN

RETURN 'September';

WHEN MONTH(CURDATE()) = 10 THEN

RETURN 'Oktober';

WHEN MONTH(CURDATE()) = 11 THEN

RETURN 'November';

WHEN MONTH(CURDATE()) = 12 THEN

RETURN 'Dezember';

END CASE;

END//

DELIMITER ;

jetzt habe ich aber 11 Case die eigentlich unnötig sind da mir eine schleife die Schreibarbeit (hoffentlich) ersparen kann .

Link zu diesem Kommentar
Auf anderen Seiten teilen

also, es wurde ja schon angesprochen MONTHNAME() würde helfen.

kommt aber drauf an was du eigentlich einsetzt, MSSQL, MySQL, ORACLE, ...?

MySQL - SELECT monthname('2008-02-03') AS 'Month Name'

MSSQL (T-SQL) - SELECT DATENAME(month, '03/02/2008') AS 'Month Name'

Orcale steht ja schon da

deine Funktion da versteh ich eh nicht, du übergibst ein datum um dann den aktuellen monatsnamen auszugeben??

Bearbeitet von _n4p_
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja ich habe in jedem case eine abfrage die ich mir hätte sparen können . So ist es eventuell verständlicher:

DELIMITER //

CREATE FUNCTION firma.monatsname()

RETURNS VARCHAR(10)

BEGIN

CASE MONTH(NOW())

WHEN 1 THEN

RETURN "Januar";

WHEN 2 THEN

RETURN "Februar";

WHEN 3 THEN

RETURN "März";

WHEN 4 THEN

RETURN "April";

WHEN 5 THEN

RETURN "Mai";

WHEN 6 THEN

RETURN "Juni";

WHEN 7 THEN

RETURN "Juli";

WHEN 8 THEN

RETURN "August";

WHEN 9 THEN

RETURN "September";

WHEN 10 THEN

RETURN "Oktober";

WHEN 11 THEN

RETURN "November";

WHEN 12 THEN

RETURN "Dezember";

END CASE;

END//

DELIMITER ;

Bearbeitet von LordPalme
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, dass wollte doch der OP ?

Gruss

naja, wenn er eh den monatsnamen zum aktuellen datum will, braucht er seiner funktion doch kein datum übergeben, oder?

aber naja, da er ja scheinbar sowieso auf seinem switch konstrukt besteht obwohl man es nachweislich mit einer zeile lösen kann, sollte ich mich über einen unbenutzten funktionsparameter wohl nicht wundern.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jetzt hab ichs au geblickt.

Also du solltest ein Datum eingeben (Tag-Monat-Jahr,.. odda anres Format kein Plan ^^) und dann sollte der MONAT mit seinem MONATsnamen ausgegeben werden. Oki, versteh den Sinn net so recht.

Abba die Aufgabestellung habi jetzt geblickt :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der sinn ist das wir lernen Funktionen zu schreiben . Die genaue Aufgabenstellung lautete :

Schreiben Sie eine Funktion mit dem Namen "monatsname()". Die Funktion soll den aktuellen Monatsnamen in deutsch zurückliefern.

Da ich momentan noch am Anfang bin was Datenbanken angeht kann ich verstehen das die Aufgabenstellung noch sehr simpel ist um erstmal ein Gefühl für die Syntax zu bekommen .

LG

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der sinn ist das wir lernen Funktionen zu schreiben . Die genaue Aufgabenstellung lautete :

Schreiben Sie eine Funktion mit dem Namen "monatsname()". Die Funktion soll den aktuellen Monatsnamen in deutsch zurückliefern.

Da ich momentan noch am Anfang bin was Datenbanken angeht kann ich verstehen das die Aufgabenstellung noch sehr simpel ist um erstmal ein Gefühl für die Syntax zu bekommen .

LG

Die DB, welche du verwendest wäre noch hilfreich....Also in Oracle wäre diese Funktion folgendermassen :


FUNCTION monatsname RETURN VARCHAR2

is

l_sResult VARCHAR2(15);


BEGIN

    SELECT   TO_CHAR (SYSDATE, 'MONTH') INTO l_sresult FROM DUAL;


    RETURN (l_sresult);

END;

Gruss

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja das ist in MySQL . Vorhandene Funktionen konnten wir zwar benutzen sollten aber eine eigenen schreiben um das zu lernen . Unsere momentaner Schwerpunkt

sind Functions und Procedures . Ich danke jedenfalls allen für die tatkräftige Hilfe .

LG LordPalme :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...