Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

SQL Grundkurs 2: Aufgaben und Lösungen

Beispiel 7: Berechnung mit Datum

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Sie möchten wissen, wie viele Monate Ihre Mitarbeiter bereits im Unternehmen beschäftigt sind und wann sie ihr zehnjähriges Firmenangehörigkeitsjubiläum feiern. Dabei sollen nur jene berücksichtigt werden, die dem Unternehmen noch immer angehören.

Transkript

Und weiter geht es mit dem Beispiel Nummer 7. In diesem geht es um die Berechnung mit Datumswerten. In der Praxis kommen zwei Arten von Berechnungen mit Datumswerten vor. Die eine Variante ist es, die Zeitspanne zwischen zwei Datumswerten zu berechnen, das können Jahre, Monate, Tage, Stunden, oder eine andere Einheit sein, und die zweite Berechnungsvariante ist es, ausgehend von einem Datum, irgendeine Zeitspanne dazuzugeben oder abzuziehen, zum Beispiel ein Jahr dazu, drei Monate früher, oder was auch immer. Heraus kommt wieder ein Datumswert. Und diese zwei Varianten wollen wir mit diesem Beispiel umsetzen. Wir wollen wissen, wie viele Monate unsere Mitarbeiter schon im Unternehmen beschäftigt sind, und wann sie ihr 10jähriges Firmenangehörigkeitsjubiläum feiern werden. Dabei sollen aber nur jene berücksichtigt werden, die dem Unternehmen noch immer angehören, das heißt noch nicht ausgeschieden sind. Wir sehen hier das Ergebnis, das am Ende herauskommen soll, aus der Personaltabelle, die wir für dieses Beispiel benötigen, möchten wir den Vor- und den Nachnamen anzeigen und das Eintrittsdatum. Die Anzahl der Monate im Betrieb, rechnen wie einerseits aus, und dann das Datum des 10jährigen Firmenjubiläums, oder besser gesagt, des Firmenangehörigkeitsjubiläums jeder einzelnen Mitarbeiterin und jedes einzelnen Mitarbeiters. Außerdem sortieren wir das Ergebnis aufsteigend nach dem Eintrittsdatum. Für die zwei berechneten Spalten werden wir natürlich wieder schöne, sprechende Aliasnamen vergeben. Pausieren Sie nun das Video und lösen Sie die Aufgabe, wenn Sie damit fertig sind, fahren Sie mit dem Video fort und sehen Sie sich meine Musterlösung an. Beim Microsoft SQL Server wird die Lösung mit folgender Anweisung umgesetzt - ich führe sie noch einmal aus, damit Sie sehen, dass wirklich diese Anweisung, zum gewünschten Ergebnis führt. Neben den Spalten nachname, vorname und eintrittsdatum die aus der Tabelle personal stammen, werden noch zwei weitere Berechnungsausdrücke umgesetzt. Für Datumsberechnungen verwenden wir bei Microsoft SQL Server, die Funktionen DATEDIFF und DATEADD. mit DATEDIFF können wir eine Zeitspanne zwischen zwei Datumswerten ausrechnen, mit DATEADD eine Zeitspanne addieren oder abziehen. Beide benötigen einen Parameter mit dem Intervall, das kann der Monat, das Jahr sein, aber auch week für Woche, und andere Parameter sind möglich. Eine Liste der vollständigen Parameter finden Sie in der Onlinedokumentation, wenn Sie zum Beispiel DATEADD markieren oder DATEDIFF und mit der F1 Funktion diese aufrufen. Die DATEDIFF-Funktion bekommt als zweiten Parameter das Ausgangsdatum, das ist das Eintrittsdatum, das wir hier sehen, und mit SYSDATETIME das aktuelle Datum, das heißt, damit wird die Zeitdifferenz zwischen Eintrittsdatum und aktuellem Datum in Monaten berechnet. Versehen wir diese Spalte mit dem Aliasnamen AS monate_im_betrieb, das liefert uns diese Spalte hier. Der zweite Ausdruck verwendet die DATEADD-Funktion, um in Jahren, 10 ist die Anzahl, wenn ich nach vorne gehen möchte, in die Zukunft, verwenden wir einen positiven Wert, mit einem negativen Wert könnte ich in die Vergangenheit gehen. Und wieder ist Eintrittsdatum der Ausgangswert, das heißt, zum Eintrittsdatum sollen 10 Jahre dazugegeben werden, und das ist das Jubiläum. Und diese Spalte hat die Ergebnisse und hier haben wir einerseits Mitarbeiter, die das Jubiläum schon hinter sich haben, aber natürlich auch einige, die es erst in Zukunft feiern werden - das Jubiläum. Damit wir nur jene Mitarbeiter berücksichtigen, die noch immer im Unternehmen arbeiten, ergänzen wir die Bedingung WHERE austritt IS NULL. Ähnlich sehen die Lösungen mit MySQL und Oracle aus. Hier mit Oracle, hier haben wir entsprechende Funktionen, nämlich einerseits die Funktion MONTHS_BETWEEN, ähnlich wie beim SQL SERVER DATEDIFF und ADD_MONTHS, um etwas dazuzurechnen. Ganz kurz zur Erklärung - generell bekommt man, wenn man zwei Datumswerte bei Oracle subtrahiert, die Differenz in Tagen. Möchten wir also die Differenz in Tagen, Wochen oder Stunden, Minuten berechnen, müssen wir direkt die zwei Datumswerte subtrahieren, und dann in die entsprechende Einheit durch Division oder Multiplikation umrechnen, also zum Beispiel mal 24, wenn ich die Differenz in Stunden haben möchte, oder dividiert durch 7, um auf Wochen zu gelangen. da das mit Monaten nicht funktioniert, gibt es dafür eine Funktion MONTHS BETWEEN. Mit MONTHS BETWEEN können wir die Differenz in Monaten berechnen. Wir sehen hier, dass das Ergebnis jetzt sehr genau dargestellt wir, mit sehr, sehr vielen Kommastellen, und wenn ich jetzt diese Anweisung noch einmal ausführe, dann sehen wir , dass sich auch in den Kommastellen gleich hier etwas verändert, weil es immer ganz aktuell ist, wesentlich genauer als beim SQL Server, aber das kann man durch Rundung dann auch entfernen, sollten die Nachkommastellen hier stören. Möchten wir die Differenz in Jahren, müssten wir auch MONTHS BETWEEN verwenden und durch 12 dividieren. Ähnlich bei der Funktion ADD MONTHS. Wenn ich zu einem Datumswert bei Oracle eine Zahl hinzurechne, bekomme ich den neuen Datumswert mit so und so vielen Tagen später. Das Gleiche gilt, wenn ich Stunden dazurechnen will, zum Beispiel drei Stunden, dann muss ich 3/24 addieren. Auch hier stoßen wir wieder bei Monat an die Grenzen, und deshalb gibt es mit ADD MONTHS eine Funktion, die in dem Fall verwendet wird, um Jahre hinzuzurechnen. Da es keine eigene Funktion für Jahre gibt, muss ich den Wert also multiplizieren, dass ich 120 Monate als Ersatz für 10 Jahre verwende, also mit ADD_MONTHS, 120 kann ich das 10jährige Jubiläum hier errechnen. Und nun noch die dritte Variante, hier mit MySQL umgesetzt, gleiche Anforderung, auch hier wieder die Tabelle personal, und das ist die Lösung. Es gibt unterschiedliche Funktionen, die man alle in der [inaudible]-Dokumentation nachlesen kann, zum Beispiel hier die Funktion TIMESTAMPDIFF, mit der wir die Differenz in Monaten berechnen. Und wieder als Parameter MONTH, damit wir Monate verwenden, vom Eintrittsdatum bis zum aktuellen Zeitpunkt, und den bekommen wir zum Beispiel mit der Funktion NOW. Und DATE_ADD, das ist sehr ähnlich wie die Funktion beim Microsoft SQL SERVER, können wir jetzt die 10 Jahre ergänzen, zum Eintrittsdatum geben wir folgendes INTERVALL dazu, hier ist die Syntax ein wenig anders, INTERVAL 10 und YEAR, und statt YEAR könnte man hier eben MONTH, DAY oder andere Intervalle definieren. Und damit berechnen wir das Jubiläum in 10 Jahren. Das Ergebnis gleicht jenen der beiden anderen Systeme, aber die Funktionen unterscheiden sich halt hier in der Verwendung. Wir haben also in diesem Beispiel gesehen, dass wir mit Datumswerten entweder, die Differenz zwischen zwei Datumswerten ausrechnen können, oder mit entsprechenden Funktionen zu einem Datumswert, eine Zeitspanne addieren oder subtrahieren können.

SQL Grundkurs 2: Aufgaben und Lösungen

Vertiefen Sie Ihre SQL-Kenntnisse. In diesem Workshop erhalten Sie zahlreiche Beispielaufgaben, die Sie selbst lösen können. Anschließend zeigt Ihnen der Trainer die Lösung.

7 Std. 41 min (61 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieses Training setzt SQL-Kenntnisse voraus, wie sie beispielsweise in „SQL lernen und anwenden“ vermittelt werden.

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!