Welcher ist heute? SQL-Datumsfunktionen

Das Datum ist was ganz besonderes was den SQL-Server angeht. Denn das ist nicht immer optimal gelöst Smiley mit herausgestreckter Zunge. Deshalb stellt uns der SQL-Server eine Handvoll toller Funktionen zur Seite die uns das Arbeiten mit dem  “fantastischen” Datum behilflich sind.

Am besten wir schauen uns erst mal die Datentypen an, die wir bezüglich eines Datums verwenden können.

Datumsdatentypen
Date – Kann nur das Datum speichern (nur für SQL-Server 2008 oder höher nutzbar)
Time – Kann nur die Zeit speichern, Genauigkeit: 100ns  (nur für SQL-Server 2008 oder höher nutzbar)
Datetime – Kann Datum und Zeit speichern, Genauigkeit: 3ms
Datetime2 – Kann Datum und Zeit speichern, Genauigkeit: 100ns
Smalldatetime – Kann Datum und Zeit speichern, Genauigkeit 1minute
Datetimeoffset – Kann die Zeit und die Zeitzone anzeigen, Genauigkeit 100ns (nur für SQL-Server 2008 oder höher)

Grundsätzlich sollte man natürlich nur den Datentyp benutzen den man auch wirklich braucht. Alle zusätzlich Abspeicherungsarten brauchen auch mehr Speicher.

Funktionen
GETDATE

Liefert das aktuelle Datum und Zeit zurück im Datetime-Format allerdings auf die Millisekunde genau. Es darf kein Parameter übergeben werden.

Select Getdate()

Ausgabe:

getdate

WICHTIG: Wenn jemand eine Abfrage starten will die z.B.: Alle Bestellungen des heutigen Tages abfragen soll, darf man nicht vergessen das Datum von Getdate() in ein Date-Datentyp zu casten/converten. Bei denjenigen die das nicht beachten sollten, wird die Chance sehr gering einen Datensatz zurück zubekommen. Denn schließlich muss die Bestellung zum gleichen Zeitpunkt (Millisekunden!) eingetragen werden wie die Abfrage ausgeführt wird.

DATEADD

Diese Funktion kann dazu benutzt werden um zu einem bestimmten Datum eine Anzahl von Tagen, Monaten usw. hinzuzufügen oder abzuziehen.
Wenn nun jemand das Datum in 35 Tagen wissen will, könnte er die Funktion Dateadd benutzen.
Allerdings fordert die Funktion drei Parameter. Dateadd(intervall, Anzahl, Datum).

Intervalle
               Hier muss festgelegt werden was ich zum Datum dazu addieren oder subtrahieren will.
               Hier eine “Liste” von alles Intervallen: d, day, dd, dayofyear, dw, dy, hh, hour, iso_week, isowk,
               isoww, m, mcs, mi, microsecond, millisecond, minute, mm, month, ms, n, nanosecond, ns, q, qq, 
               quarter, s, ss, tz, tzoffset, w, week, weekday, wk, ww, y, year, yy, yyyy
               Die meisten Intervalle sind selbsterklärend, um den Blogeintrag jetzt nicht unnötig in die Länge
               zu ziehen ist hier eine Übersicht über fast 
               alle Intervalle http://technet.microsoft.com/de-de/library/ms186819.aspx. Falls er nicht im Link
               zu finden ist Mail an MariusI@ppedv.de.

Anzahl
              
Hier Bedarf es glaub ich keiner großen Erklärung. An dieser Stell muss die Anzahl der Tage oder
               was auch immer für ein Intervall verwendet wurde, die man dazu addieren will.

Datum
               Dort muss das Datum angegeben werden zu dem das ganze hinzu gerechnet werden soll.

Select Dateadd(dd, 35, '27.01.2014')


Ergebnis:

dateadd

Um nun das Datum vor 35 Tagen herauszufinden muss man lediglich ein Minus vor die Anzahl der Tage machen.

DATEDIFF

Mit dieser Funktion ist es möglich Differenz zwischen zwei Daten zu bestimmen. In was die Differenz zurückgeben wird hängt vom übergebenen Intervall ab. Der Funktion müssen drei Parameter mitgegeben werden. Intervall, Erstes Datum und Zweites Datum.

Select Datediff(mm, Getdate(), '24.12.2014')

Ausgabe:

datediff

Wer gerne wissen möchte wie viele Monate es noch bis Weihnachten (2014) ist. Die Abbildung zeigt es. Hier können natürlich auch andere Intervalle angegeben werden.

DATENAME

Diese Funktion liefert den Namen eines Datums zurück. Macht allerdings nur mit zwei Intervallen: DW (Wochentag) und MM (Monat). Schließlich haben nur Monate und Wochentage Namen. Netter Nebeneffekt der Funktion ist das alles in Varchar um konvertiert wird.

Select Datename(DW, Getdate())

Ausgabe:

Datename

Heute ist der 27.01.2014 und es ist Montag (Ja es ist Montag und ich bin in der Lage ein Blogeintrag zu schreiben, manchmal verblüff ich mich selbst).

DATEPART

Mit dieser Funktion ist es möglich einen Teil eines bestehenden Datums zu extrahieren. Die Funktion erwartet zwei Parameter, Intervall und Datum. Der Intervall gibt hier an welcher Teil des Datums extrahiert werden soll.

Select Datepart(yy, Getdate())

Ergebnis:

datepart

Das Ergebnis ist denke ich selbsterklärend.
Alternative zur Datepart-Funktion kann man auch die Funktionen Day(), Month() oder Year() verwenden.
Denen muss man lediglich einen Parameter mitgeben und zwar das Datum.

Select Year(Getdate())


Die Ausgabe ist die selbe.

Ich hoffe ich konnte dem ein oder anderen die Datumsfunktionen in SQL näherbringen.

Kommentare sind geschlossen