HINWEIS
BEISPIEL
BEISPIEL
In einigen Spezialfällen (Expertensysteme etc.) bietet sich anstatt der NULL-Werte die Einführung von Wahr-
scheinlichkeitsfaktoren für die Bestimmung einer Aussage an.
Datum und Zeit in SQL-Abfragen
Häufig ist es erforderlich, Datumswerte bzw. Teile von Datumswerten (Jahre, Monate, Tage) in WHERE-
Klauseln einzubauen. Jet-SQL stellt zu diesem Zweck eine Reihe von Funktionen bereit:
Funktion Bemerkung
NOW Liefert das aktuelle Datum und die Zeit
DATE Liefert das aktuelle Datum
TIME Liefert die aktuelle Zeit
HOUR Extrahiert die Stunden aus einem Zeitwert
MINUTE Extrahiert die Minuten aus einem Zeitwert
SECOND Extrahiert die Sekunden aus einem Zeitwert
MONTH Extrahiert den Monat aus einem Datumswert
YEAR Extrahiert das Jahr aus einem Datumswert
WEEKDAY Extrahiert den Wochentag aus einem Datumswert
Tabelle 8.18 Datums- und Zeitfunktionen
Die Verwendung der o.g. Funktionen
SELECT
DATE() AS [Date()],
NOW() AS [Now()],
TIME() AS [Time()]
Abbildung 8.76 Abfrageergebnis
Verwendung von YEAR (alle Bestellungen ermitteln, die im Jahr 1998 aufgegeben wurden):
SELECT
*
FROM
Bestellungen
WHERE
YEAR(Bestelldatum) = 1998
477
Erweiterte SQL-Funktionen
HINWEIS
BEISPIEL
Kapitel 8: SQL in Theorie und Praxis
Abbildung 8.77 Abfrageergebnis
Sie können die o.g. Funktion auch im Zusammenhang mit der ORDER BY- bzw. GROUP BY-Klausel verwenden.
Datumsberechnungen
Neben den einfachen Datums- und Zeitfunktionen bieten sich mit DATEDIFF, DATEADD und DATE-
PART recht komplexe Funktionen für die Berechnung bzw. Verarbeitung von Datums- und Zeitwerten an.
Mit der Funktion DATEDIFF können Sie Differenzen zwischen Datumswerten berechnen. Auf welches In-
tervall (Tage, Jahre etc.) sich diese Differenz bezieht, legen Sie selbst fest.
DATEDIFF(interval, datum1, datum2)
Intervall Beschreibung
yyyy Jahre
q Quartale
m Monate
y Tag des Jahres
d Tage
w Wochentage
ww Wochen
h Stunden
n Minuten
s Sekunden
Tabelle 8.19 Mögliche Werte für den Parameter interval
Berechnung des Alters eines Mitarbeiters in Tagen, Monaten und Jahren.
SELECT
Nachname,
Vorname,
Geburtsdatum,
DATEDIFF('d', Geburtsdatum, Now) AS [Tage],
DATEDIFF('m', Geburtsdatum, Now) AS [Monate],
478
BEISPIEL
BEISPIEL
DATEDIFF('yyyy', Geburtsdatum, Now) AS [Jahre]
FROM
Personal
Abbildung 8.78 Abfrageergebnis
Auf diese Weise lassen sich auch Datensätze selektieren, die bestimmte Kriterien erfüllen.
Alle Mitarbeiter, die älter als 50 Jahre sind.
SELECT
Nachname, Vorname, Geburtsdatum
FROM
Personal
WHERE
DATEDIFF('yyyy', Geburtsdatum, Now) > 50
Abbildung 8.79 Abfrageergebnis
Andererseits bietet sich diese Funktion auch zum Gruppieren von Daten an.
Anzahl der Mitarbeiter in den einzelnen Altersgruppen.
SELECT
DATEDIFF('yyyy', Geburtsdatum, Now) AS Jahrgang,
Count(*) AS Anzahl
FROM
Personal
GROUP BY
DATEDIFF('yyyy', Geburtsdatum, Now)
479
Erweiterte SQL-Funktionen
BEISPIEL
Kapitel 8: SQL in Theorie und Praxis
Abbildung 8.80 Abfrageergebnis
Eine weitere Funktion ermöglicht die Berechnung eines neuen Datums basierend auf einem Ausgangs-
datum:
DATEADD(intervall, anzahl, datum)
Es gelten für die Eigenschaft intervall die gleichen Parameter wie bei der DATEDIFF-Funktion.
Um die Altersstruktur Ihres Unternehmens zu schönen, machen Sie die Mitarbeiter virtuell um zwei Jahre äl-
ter.
SELECT
Nachname, Vorname,
DATEADD('yyyy', 2, Geburtsdatum) AS [Geburtsdatum Neu],
Geburtsdatum
FROM
Personal
Abbildung 8.81 Abfrageergebnis
Geht es darum, aus einem Datumswert Teile zu extrahieren, können Sie auch die Funktion DATEPART
einsetzen:
DATEPART(datumsteil, datum)
Die folgende Tabelle zeigt die Parameter im Einzelnen.
480
BEISPIEL
BEISPIEL
Datumsteil Beschreibung
yyyy Jahr
qQuartal
mMonat
y Tag des Jahres
dTag
w Wochentag
ww Woche
h Stunde
n Minute
s Sekunde
Tabelle 8.20 Parameter für DATEPART
Verwendung der Funktion DATEPART
SELECT
NOW,
DATEPART('yyyy', Now()) AS Jahr,
DATEPART('q', Now()) AS Quartal,
DATEPART('y', Now()) AS [Tag des Jahres],
DATEPART('m', Now()) AS Monat,
DATEPART('d', Now()) AS Tag
Abbildung 8.82 Abfrageergebnis
DateValue
Mit DATEVALUE bietet sich Ihnen die Möglichkeit, aus einem String ein korrektes Datum zu erzeugen.
Die Funktion nutzt die unter Microsoft Windows festgelegten Ländereinstellungen, um die Typkonver-
tierung (String -> Datum) durchzuführen.
Verwendung von DATEVALUE
SELECT
DATEVALUE('1.11'),
DATEVALUE('1.11.78'),
DATEVALUE('1.11.01'),
DATEVALUE('1.11.2001'),
DATEVALUE('1/5/2001')
481
Erweiterte SQL-Funktionen

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.