Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Sql

Empfohlene Antworten

Veröffentlicht

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

Hey,...

Also wenn ich dich richtig verstanden habe, sollte das dann wohl sowas in der Art sein, oder?

for v_zaehler in 1..12 loop

//mach dies und das.. (monatszahlen --> entsp. monatsnamen)

end loop;

Schau auch mal da: SQL: 8.5 Datumsfunktionen

Denke monthname(i) könnte für dich intressant sein

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 :-)

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 ^^

Hi Jungs ,

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

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 .

WHEN MONTH(CURDATE()) = 1 THEN

RETURN 'Januar';

Hmm, dann musste wohl doch die monatsnamen in n array packen und über die zählervariable auf den index zugreifen

hab ich mir schon gedacht danke jedenfalls für deine Hilfe .

LG LordPalme

Jo, wenn ich dir helfen konnte :)

Gerne doch

Hi Jungs ,

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

LG LordPalme

Hallo,

Zumindest in Oracle könntest du folgendes machen :


SELECT to_char(SYSDATE,'MONTH') FROM dual

Gruss

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_

Ja das war die aufgabe von unserm doz muss man nicht verstehen nur machen :-(

thx

Ja abba er meinte deine Funktion. Net die Aufgabe vom Doz

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

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.

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

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

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

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 :)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.