SQL Grundkurs 1: Die Sprache erlernen

Rechnen mit Datumswerten Teil 1

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Zu einem Datum eine Woche hinzufügen oder einen Monat abziehen - das ist das Thema in diesem Video. Sie lernen die beiden typischen Varianten kennen.

Transkript

In diesem Video zeige ich Ihnen, wie Sie in Ausdrücken Berechnungen mit Datumswerten verwenden. In der Praxis gibt es eigentlich typischerweise zwei Arten von Berechnungen, die man mit Datumswerten realisiert. Die eine Variante: Man hat einen fixen Datumswert und gibt irgendeine Periode dazu oder zieht eine Periode ab. Oder, die zweite Variante: Man hat zwei Datumswerte und möchte die Zeitspanne dazwischen berechnen. Fangen wir mit der ersten Variante an. Wir möchten eine Zeit zu irgendetwas dazugeben oder abziehen. Wir haben in unserer Bestelltabelle ein Datum gespeichert, das können wir dazu heranziehen. Wie können wir nun realisieren, z.B. einen Tag dazu? Beim Microsoft SQL Server verwenden wir dazu die Funktion "DATEADD". Die Funktion "DATEADD" hat folgende Parameter: Zuerst das Intervall, in dem Fall würden wir sagen, ein Tag; wie viele? Z.B. einer; und wozu zum Datum, also dem Inhalt des Bestelldatums. Sehen wir uns das Ergebnis an: Damit haben wir einen Tag dazu gegeben, vom 4. Jänner kommen wir auf den 5. Jänner. Mit dieser Funktion kann ich beliebige andere Intervalle definieren, z.B. könnte ich jetzt auch Wochen hier verwenden. Da verwende ich dann "week" als Parameter, z.B. drei, d.h. plus drei Wochen. D.h., ich komme vom 4. Jänner auf den 25. Jänner. Jetzt kann ich natürlich auch nicht nur dazu, sondern auch abziehen, d.h., ich kann sozusagen in die Vergangenheit gehen. "DATEADD", und ich verwende diesmal Monate, und sage, minus zwei Monate vom Datum, das wäre also minus zwei Monate. D.h. aus dem 4. Jänner muss dann der 4. November werden, des Vorjahres. Und das ist in dem Fall auch so. Ich kann aber auch Quartale und Jahre hier als Parameter verwenden, das ist hier überhaupt kein Thema. Ich nehme z.B. "quarter", gebe ein Quartal dazu, zum Datum - das wäre dasselbe, als würde ich drei Monate dazu rechnen. Ein Quartal wäre der 4. April. Zum Abschluss verwende ich noch ein Jahr, "DATEADD", verwende hier die Variante "year", und gebe fünf Jahre, damit es sich auszahlt, gleich dazu, heißt plus fünf Jahre. Auf die Art und Weise kommen wir auf den 4. Jänner 2016. Ähnlich funktioniert das Ganze bei MySQL. Auch hier gibt es eine Funktion "DATE_ADD", die hat nur eine leicht andere Syntax. Ich kopiere mir die Anweisung daher in den MySQL-Editor und schauen wir uns an, was wir hier zu ändern haben, um auf die gleiche Darstellungsform zu kommen. Ich passe hier vorher noch die Einrückung an, damit das Ganze auch optisch ein Gesicht hat. Was ist jetzt der Unterschied von der Syntax? Zum ersten heißt die Funktion "DATE_ADD" etwas anders, sie heißt zwar gleich in dem Sinn, aber sie hat hier einen Unterstrich mit drin im Namen. D.h., ich füge einmal hier überall den Unterstrich ein. Der nächste Unterschied ist, dass der erste Parameter bei dieser DATE_ADD-Funktion das Datum ist, d.h., das Datum muss hier überall an die erste Stelle gesetzt werden. Danach kommt das fixe Schlüsselwort "INTERVAL", das nun angibt, z.B. "INTERVAL 1", und das Ganze ist z.B. ein Tag, also würde ich sagen "DAY". Das Ganze wiederholt sich jetzt hier, überall verwende ich hier "INTERVAL 3", und das waren in dem Fall Wochen, also schreibe ich hier "WEEK". Beim Monat dasselbe - auch hier, der negative Parameter bedeutet, zwei Monate möchte ich in die Vergangenheit gehen - "MONTHS" wäre hier der Parameter. Auch Quartale gibt es hier, bloß ein Quartal "QUARTER". Selbstverständlich gibt es auch Jahr als Parameter, das füge ich hier auch noch ein. Da habe ich noch einen Tippfehler, den ich ausbessere, bevor ich die Anweisung nun auch hier starten werde. Schauen wir uns das Ergebnis kurz an: wir bekommen dasselbe Ergebnis. Ausgangssituation war der 20. Jänner: Der 21. Jänner ist ein Tag dazu, der 20. plus drei Wochen. Der 20. November des Vorjahres war zwei Monate nach vor, ein Quartal dazu zum 20. Jänner ist der 20. April, und fünf Jahre zum Jahr 2004 dazu wären in dem Fall hier der 20. Jänner 2009. Etwas andere Wege geht Oracle in diesem Zusammenhang. Bei Oracle gibt es nämlich nur eine Datumsfunktion, die heißt "ADD_MONTHS", d.h. jede andere Berechnung muss entweder auf Tagesbasis oder Monatsbasis erfolgen. Was bedeutet das? Wenn wir uns einmal das Datum hier holen von der Bestellung, dann können wir jetzt durch Addition Tage ergänzen oder auch durch Subtraktion Tage abziehen. D.h., wenn ich jetzt sage, z.B. Datum +1, dann wäre das schon plus ein Tag. Es gibt hier keine Funktion für den Tag, da werden einfach ganzzahlige Werte verwendet. Ich starte die Anweisung und Sie sehen, ich komme jetzt vom 4. Jänner auf den 5. Jänner. Jetzt muss ich wieder umdenken, weil Oracle ja hier ein anderes Datumsformat verwendet. Wenn ich jetzt also eine Woche ergänzen möchte oder drei Wochen, wie wir es vorhin hatten, dann muss ich das selber berechnen, auf Basis Tag. D.h., ich muss in dem Fall einfach 21 Tage hier ergänzen, um zu sagen, ich möchte jetzt sagen, plus drei Wochen von der Logik her. Das lässt sich hier gar nicht anders realisieren. Dasselbe geht natürlich auch mit minus Tage zurück. Beim Monat bin ich allerdings mit meinem Latein am Ende, weil Monat hat unterschiedliche Tage, das kann ich auf Basis eines Tages nicht berechnen. Deshalb gibt es hier eine einzige Funktion dafür, und das ist die Funktion "ADD_MONTHS". Die Funktion "ADD_MONTHS" hat als ersten Parameter das Datum und dann die Anzahl der Monate, die man dazu geben möchte, z.B. zwei Monate, heißt plus zwei Monate. Und damit kommen wir vom 4. Jänner auf den 4. März. Quartale und Jahre muss ich wieder auf Basis Monat selbst berechnen. D.h., wenn ich ein Jahr dazu geben möchte, oder auch abziehen möchte, z.B. vor einem Jahr, dann muss ich hier die Funktion "ADD_MONTHS" mit -12 verwenden. Das wäre in dem Fall minus ein Jahr. Und das wäre vom 4. Jänner 2006 auf den 4. Jänner 2005. Oracle kennt also hier nur die Funktion "ADD_MONTHS". Alles, was auf Basis Monat zu berechnen geht, muss ich mit dieser Funktion machen, alles andere, was auf Basis Tag geht, muss ich mit einfacher Addition machen. Theoretisch kann ich auch Stunden hier berechnen, indem ich einfach, z.B. ein Vierundzwanzigstel ergänze, würde ich eine Stunde dazu rechnen. Sie haben in diesem Video gesehen, wie Sie Zeitspannen berechnen. Bei Oracle, indem Sie mit Monats- und Tagesbasis arbeiten und alles weiter rechnen; beim Microsoft SQL Server und bei MySQL jeweils mit der Funktion "DATEADD", der Sie den entsprechenden Format-Parameter übergeben können, um zu definieren, ob das jetzt ein Tag, Woche, Monat, Quartal oder ein anderes Intervall sein soll.

SQL Grundkurs 1: Die Sprache erlernen

Arbeiten Sie sich in die Grundlagen der Datenbanksprache SQL am Beispiel von Microsoft SQL Server, Oracle und MySQL ein und lassen Sie sich die praktische Nutzung erklären.

14 Std. 40 min (112 Videos)
Derzeit sind keine Feedbacks vorhanden...

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!