Home > Artikel > Ausgabe 4/2011 > Access-Funktionen: Datum und Zeit

Access-Funktionen: Datum und Zeit

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

Datums- und Zeitangaben lassen sich unter Access hervorragend verwalten – wenn man weiß, wie es richtig funktioniert. Dieser Artikel zeigt, welche Funktionen Access zum Verarbeiten von Datums- und Zeitangaben in Ausdrücken und unter VBA bietet.

Beispiele

Die Beispiele dieses Artikels finden Sie in der Beispieldatenbank Access_Basics_2011_04.mdb.

Zeitfunktionen

In den folgenden Abschnitten lernen Sie die folgenden Zeitfunktionen kennen (erste Angabe: deutscher Name, in Klammern: englischer Name der Funktion):

  • Datum (Date): Gibt das aktuelle Systemdatum zurück.
  • Zeit (Time): Gibt die aktuelle Systemzeit zurück.
  • Jetzt (Now): Gibt das aktuelle Systemdatum und die aktuelle Systemzeit zurück.
  • IstDatum (IsDate): Überprüft, ob ein Ausdruck in einen Wert vom Datentyp Datum/Uhrzeit konvertiert werden kann.
  • ZDate (CDate): Wandelt eine gültige Datumseingabe in den Datentyp Datum/Uhrzeit um.
  • Jahr (Year): Extrahiert die vierstellige Jahreszahl aus einem Datum.
  • Monat (Month): Extrahiert den Monat (1-12) aus dem Datum.
  • Tag (Day): Extrahiert den Tag (1-31) aus dem Datum.
  • Stunde (Hour): Extrahiert die Stunde (0-23) aus dem Datum.
  • Minute (Minute): Extrahiert die Minute (0-59) aus dem Datum.
  • Sekunde (Second): Extrahiert die Sekunde (0-59) aus dem Datum.
  • DatTeil (DatePart): Liefert einen durch einen Parameter bestimmten Teil des Datums.
  • Wochentag (Weekday): Liefert den Wochentag des Datums.
  • DatSeriell (DateSerial): Fügt aus den Komponenten Jahr, Monat und Tag einen Wert vom Datentyp Datum/Uhrzeit zusammen.
  • ZeitSeriell (TimeSerial): Fügt aus den Komponenten Stunde, Minute und Sekunde einen Wert vom Datentyp Datum/Uhrzeit zusammen.
  • DatAdd (DateAdd): Addiert ja nach Parameter Jahre, Monate, Tage, Stunden, Minuten oder Sekunden zum angegebenen Datum hinzu.
  • DatDiff (DateDiff): Liefert die Anzahl der Zeitintervalle eines bestimmten Intervalls, die zwischen zwei Daten liegen.

Die deutsche Variante der Funktionen können Sie in der deutschsprachigen Version statt der englischen in Ausdrücken verwenden, also beispielsweise in Werten oder Kriterien in Abfragen oder als Eigenschaften von Formularen, Berichten oder Steuerelementen. Die englischen Varianten verwenden Sie in VBA-Code.

Sie können die englischen Bezeichnungen auch in Ausdrücken angeben, diese werden jedoch in der deutschen Version von Access in die deutschen Bezeichnungen umgewandelt. In Ausdrücken verwenden Sie das Semikolon als Trennzeichen zwischen den einzelnen Parametern, unter VBA das Komma.

Aktuelles Datum und aktuelle Zeit ermitteln

Die Funktionen Datum, Zeit und Jetzt liefern Informationen über die aktuelle Systemzeit. Datum ermittelt nur das Datum (1.1.2011), Zeit nur die Zeit (13:23:10) und Jetzt liefert beide Komponenten zusammen (1.1.2011 13:23:10).

Die Funktionen können Sie beispielsweise einsetzen, um den Zeitpunkt des Anlegens eines Datensatzes in einer Tabelle zu speichern. Dazu tragen Sie einfach die gewünschte Funktion für die Eigenschaft Standardwert des Feldes zum Speichern dieser Information ein (siehe Bild 1). In diesem Fall soll die Funktion Jetzt gleich Datum und Uhrzeit gemeinsam in das Feld eintragen. Als Datentyp legen Sie optimalerweise Datum/Uhrzeit fest.

Anlegen einer Datumsfunktion als Standardwert eines Tabellenfeldes

Bild 1: Anlegen einer Datumsfunktion als Standardwert eines Tabellenfeldes

Die Funktionen Datum, Zeit und Jetzt werden auch gern in Berichten eingesetzt. Wenn Sie beispielsweise jeweils das aktuelle Datum im Seitenfuß der Berichts anzeigen möchten, öffnen Sie diesen in der Entwurfsansicht, fügen dem Seitenfußbereich ein neues Textfeld hinzu und tragen für seine Eigenschaft Steuerelementinhalt den Ausdruck =Datum() ein (siehe Bild 2).

Verwenden einer Datumsfunktion im Seitenfuß eines Berichts

Bild 2: Verwenden einer Datumsfunktion im Seitenfuß eines Berichts

Datum und Zeit als Parameter angeben

In den folgenden Abschnitten werden wir oft Datum- und Zeitangaben als Parameter verwenden. Die Frage ist: Welche Formate sind hier zulässig? Es gibt einige Standardformate, die in allen Umgebungen arbeiten und einige landesspezifische Formate.

In Deutschland können Sie ein Datum beispielsweise als 1.1.2011, 1. Jan 2011 oder 1. Januar 2011 angeben.Bei einem englischen Betriebssystem werden diese Angaben als Parameter von Datumsfunktionen zu Fehlern führen. Umgekehrt kommt ein deutsches System nicht mit englischen Formaten zurecht.

Nichts verkehrt machen Sie, wenn Sie ein allgemeingültiges Format verwenden. Dieses lautet beispielsweise yyyy/mm/dd hh:nn:ss, wobei nn für Minuten steht (die anderen Abkürzungen sollten selbsterklärend sein).

Prüfen, ob ein Wert ein gültiges Datum ist

Mit der Funktion IstDatum (IsDate) prüfen Sie, ob ein Datum ein gültiges Datum ist. Das zu prüfende Datum geben Sie dabei als Parameter an. Im Direktfenster des VBA-Editors (Tastenkombination Strg + G) prüfen Sie die Gültigkeit eines Datums beispielsweise mit der folgenden Anweisung:

  IsDate(“1.1.2010”)

Wahr

Wenn der Parameter kein gültiges Datum liefert, gibt die Funktion den Wert False zurück. Das gilt sowohl für Daten im falschen Format als auch für ungültige Datumsangaben:

  IsDate(“1. January 2010”)

Falsch

  IsDate(“29.2.2011”)

Falsch

Werte in Datum umwandeln

Werte, die noch nicht im Datumsformat vorliegen, können Sie mit der Funktion ZDate (CDate) in den Datentyp Datum/Zeit konvertieren. ZDate liefert einen Fehler, wenn Sie versuchen, eine ungültige Angabe in ein Datum zu konvertieren (siehe Bild 3). Dabei ist die Funktion teilweise schwer einzuschätzen. Während die IstDatum-Funktion zum Beispiel eine Zahl wie 33333 nicht als Datum erkennt, wandelt die ZDatum-Funktion diesen Wert in ein Datum um:

Das Konvertieren ungültiger Datumsangaben liefert eine Fehlermeldung.

Bild 3: Das Konvertieren ungültiger Datumsangaben liefert eine Fehlermeldung.

  CDate(33333)

05.04.1991

Beim Datum 29.2.2011, das ja eigentlich nicht existiert, liefert IstDatum den Wert Falsch. Die ZDate-Funktion hingegen erkennt hier ein Datum:

  CDate(“29.2.2011”)

11.03.9900

Hier werden schlicht die Punkte entfernt, die Zeichenkette in eine Zahl umgewandelt und schon hat man den 2.922.011-ten Tag nach dem 30.12.1899.

Tag, Monat und Jahr extrahieren

Die Funktionen Tag (Day), Monat (Month) und Jahr (Year) liefern Bestandteile des als Parameter angegebenen Datums.

Diese Funktionen haben wir in einer Beispielabfrage ohne Datenherkunft eingesetzt (qryDatumExtrahieren). Sie liefert pro Feld eines der Bestandteile des Datums als Ganzzahl (siehe Bild 4).

Extrahieren der Datumsbestandteile in einer Abfrage

Bild 4: Extrahieren der Datumsbestandteile in einer Abfrage

Ein praktischer Einsatzzweck ergibt sich, wenn Sie beispielsweise alle Kunde ausgeben möchten, die im folgenden Monat Geburtstag haben. Dabei verwenden Sie die Funktion Monat() gleich zwei Mal: Einmal zum Ermitteln des Monats, in dem der Kunde Geburtstag hat und einmal zum ermitteln der Nummer des kommenden Monats als Kriterium (siehe Bild 5).

Welche Kunden haben nächsten Monat Geburtstag?

Bild 5: Welche Kunden haben nächsten Monat Geburtstag?

Stunde, Minute und Sekunde extrahieren

Das Gleiche gelingt mit den Stunden, Minuten und Sekunden einer Zeitangabe. Die folgenden drei Aufrufe haben wir im Direktfenster des VBA-Editors abgesetzt:

  Hour(Time())

  21

  Minute(Time())

  35

  Second(Time())

54

Noch mehr Zeitangaben extrahieren

Während die zuvor vorgestellten Funktionen nur jeweils ein festes Element des Datums ermittelt haben, ist die Funktion DatTeil (DatePart) ein wenig flexibler: Ihr übergeben Sie zwei Parameter, nämlich erstens das gewünschte Intervall und zweitens das zu untersuchende Datum. Mit zwei weiteren Parametern legen Sie noch weitere Feinheiten fest, die wir gleich besprechen.

Der folgende Funktionsaufruf liefert beispielsweise das Jahr:

  DatePart(“yyyy”, now)

2011

Darüberhinaus gibt es die folgenden möglichen Werte für den ersten Parameter (erster Wert deutsch, Wert in Klammern englisch):

  • jjjj (yyyy): Jahr
  • q (q): Quartal
  • m (m): Monat
  • j (y): Tag des Jahres, durchgehend gezählt ab dem 1. Januar
  • t (d): Tag
  • w (w): Wochentag
  • ww (ww): Kalenderwoche
  • h (h): Stunde
  • n (n): Minute
  • s (s): Sekunde

Der dritte und der vierte Parameter sind für die Ermittlung von Wochentag und Kalenderwoche verantwortlich. Der dritte Parameter erwartet eine Zahl zwischen 1 und 7, die angibt, welcher Tag der erste Tag der Woche ist. Standardmäßig ist Sonntag der erste Tag der Woche:

  DatePart(“w”, “15.5.2011”)

1

Es ist jedoch sinnvoll, Montag als ersten Tag der Woche einzustellen. Wenn Sie dann herausfinden möchten, ob ein Datum auf ein Wochenende fällt, brauchen Sie nur zu prüfen, ob der Wochentag größer 5 ist.

Für den dritten Parameter geben Sie eine dem Wochentag entsprechende Konstante oder den passenden Zahlenwert an:

  DatePart(“w”, “16.5.2011”, vbMonday)

1

Die Zahlenwerte und ihre Konstanten lauten:

  • 0: vbUseSystem
  • 1: vbSunday (Voreinstellung)
  • 2: vbMonday
  • 3: vbTuesday
  • 4: vbWednesday
  • 5: vbThursday
  • 6: vbFriday
  • 7: vbSaturday

Mit dem vierten Parameter stellen ein, wie die Kalenderwoche eines Datums ermittelt wird.

Diese Einstellung ist nur relevant, wenn Sie mit dem ersten Parameter ww nach der Kalenderwoche zum angegebenen Datum suchen und kann folgende Werte annehmen:

  • 0: vbUseSystem
  • 1: vbFirstJan1 (die erste Kalenderwoche ist die Woche, in die der erste Januar fällt, Voreinstellung)
  • 2: vbFirstFourDays (die erste Kalenderwoche ist die, welche mindestens vier Tage des neuen Jahres enthält)
  • 3: vbFirstFullWeek (die erste Kalenderwoche ist die, welche komplett in das neue Jahr fällt)

Wochentag ermitteln

Den Wochentag ermitteln Sie einerseits mit der zuvor vorgestellten Funktion DatePart, wobei Sie den Wert w für den ersten Parameter übergeben.

Etwas einfacher gelingt dies noch mit der Funktion Wochentag (Weekday). Diese Funktion erwartet lediglich das Datum als Pflichtparameter:

  Weekday(“16.5.2011”)

2

Sie können jedoch auch hier den ersten Tag der Woche festlegen:

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!