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

Mehrere Datumsfunktionen in ein Funktionsscript, Table-valued oder Scalar-valued Funktion

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von mindhunter, 20 Oktober 2014.

  1. mindhunter

    mindhunter Benutzer

    Hi,
    in einer SQL-DB soll nach Eingabe oder Update ein Datum in neue Felder zerlegt werden. Das Datum z.B. 2014-10-20 soll in Monat (10), Jahr (2014) zerlegt werden. Also eine Eingabe (Datum) und zwei Ausgaben (Jahr, Monat). Falls das funktionieren würde, dann würde ich noch mehr Datumsfunktionen einbauen wollen.
    Mir ist nicht ganz so klar, ob es eine Table-valued oder Scalar-valued Funktion sein soll. Den Unterschied habe ich noch nicht verstanden. Vom Gefühl her wird es wohl eine Table-valued Funktion sein. Kann ich nun zwei Funktionen in ein Script schreiben oder sind dazu zwei Funktionen notwendig?


    YEAR('2014-10-20') AS JAHR
    MONTH('2014-10-20') AS MONAT

    Liebe Grüße und Danke für die Hilfe
    Stefan
     
  2. ukulele

    ukulele Datenbank-Guru

    Verstehe nicht wozu das gut sein soll. Du kannst doch einfach das Datum speichern und bei der Ausgabe mit year() oder datepart(yyyy,<spalte>) darauf zugreifen. Warum sollte man die Informationen redundant speichern?
     
    Walter gefällt das.
  3. mindhunter

    mindhunter Benutzer

    Ich brauche die Daten später in einer Maske und eventuell zum Sortieren. Es geht mich auch um das Verständnis von solten valued Funktionen.
     
  4. ukulele

    ukulele Datenbank-Guru

    Also zum sortieren kannst du ebenfalls Funktionen verwenden, gleiches gilt für die Ausgabe eines Selects um die Daten in irgendwelche Felder zu laden. Das ganze könnte auch per View vereinfacht werden.

    Wenn ich das richtig verstehe möchtest du die Werte zerlegen, in Felder laden und dann vermutlich auch ändern und wieder in die Tabelle schreiben können. Ich habe mir das mit den valued functions mal hier angeguckt (habe ich noch nie genutzt) http://www.codeproject.com/Articles/167399/Using-Table-Valued-Functions-in-SQL-Server und würde mal vermuten das du damit deine Werte auch nicht wieder speichern kannst, ähnlich wie bei einer View.

    PS: Okay wenn man weiter ließt scheint das auch zu gehen, prinzipiell ließe sich das aber auch mit einem Trigger und zusätzlichen Spalten umsetzen und wäre einfacher zu verstehen :)
     
  5. mindhunter

    mindhunter Benutzer

    Ich glaube mit einem Trigger ist es einfacher. Können hier die beiden Datumsfunktionen so eingesetzt werden? Sorry, bin noch total neu in dem SQL-Thema! :confused:
     
  6. ukulele

    ukulele Datenbank-Guru

    Klar, du musst nur unterscheiden wann der Trigger ein Datum in seine Bestandteile zerlegen soll und in die jeweiligen Felder eintragen soll und wann die einzelnen Werte gezielt von deiner Maske verändert werden. Also z.B. nur wenn sie leer sind.

    Und bedenke das ein Trigger pro UPDATE oder INSERT Statement nur einmal feuert. Aktuallisierst du zwei Zeilen auf einmal und dein Trigger behandelt nur Eine passiert in der Anderen gar nichts.
     
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