Skalarfunktionen in SQL (Funktionen für Datums- und Zeitwerte)

Bei SQL-Befehlen für Datums- und Zeitwerte muss beachtet werden, dass jeder SQL-Client für die Datums- und Zeitfunktionen eigene Befehle hat. Ich stelle die gängigen Befehle für HeidiSQL/MySQL vor.

Das Systemdatum und die Systemuhrzeit kann mit folgenden Befehlen abgefragt werden:

CURRENT_DATE: gibt das aktuelle Datum aus

CURRENT_TIME: gibt die aktuelle Zeit aus

CURRENT_TIMESTAMP: gibt das aktuelle Datum inklusive der aktuellen Zeit aus

select CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP

  • Datumsfunktionen:

Mit folgenden Funktionen kann nur ein Teil des Datums ausgegeben werden:

YEAR(date): gibt das Jahr des angegebenen Datums aus

MONTH(date): gibt den Monat des angegebenen Datums aus

DAY(date): gibt den Tag des angegebenen Datums aus

SELECT CURRENT_DATE, YEAR(CURRENT_DATE) AS YEAR, MONTH(CURRENT_DATE) AS MONTH, DAY(CURRENT_DATE) AS DAY

Bei einer Zeitspalte ohne Datum, nur mit Uhrzeit, sind die Datumsfunktionen natürlich unzulässig.

Weitere Informationen zum Datum geben folgende Funktionen aus:

DAYOFWEEK(date):  gibt den Wochentag als Zahl aus (1 für Sonntag usw.)

DAYNAME(date): gibt den Wochentag als Namen aus

MONTHNAME(date): gibt den Monat als Namen aus

LAST_DAY(date): gibt den letzten Tag des Monats aus

In der Beispieldatenbank Sakila kann aus der Tabelle rental z.B. das Ausleihdatum ausgegeben und bearbeitet werden:

SELECT rental_date, day(rental_date), DAYOFWEEK(rental_date), DAYNAME(rental_date) FROM rental

Daten ermitteln bzw. berechnen:

DATE_SUB(date, INTERVAL value type_of_interval): gibt ein Datum in der Vergangenheit von ‚date‘ aus. ‚Type_of_value‘ entspricht der Einheit, die abgezogen werden soll und ‚value‘ entspricht dem Wert der abgezogen werden soll.

DATE_ADD(date, INTERVAL value type_of_interval): gibt ein Datum in der Zukunft von ‚date‘ aus. ‚Type_of_value‘ entspricht der Einheit, die hinzugefügt werden soll und ‚value‘ entspricht dem Wert der hinzugezählt werden soll.

TIMESTAMPDIFF(unit, date1, date2): Gibt die Differenz zwischen 2 Daten (date2 – date1) in der Einheit ‘unit‘ aus. Zu beachten ist, das TIMESTAMPDIFF die Anzahl der vollständigen unit-Intervalle ausgibt. Es werden keine angebrochenen Intervalle berücksichtigt.

type_of_interval + unit können folgende Einheiten annehmen: YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MICROSECOND

So kann ohne Probleme die Ausleihdauer ausgegeben werden, oder ein Ausleihende nach z.B. 8 Tagen berechnet werden:

SELECT rental_date, LAST_DAY(rental_date), return_date, TIMESTAMPDIFF(DAY, rental_date, return_date) AS Ausleihdauer, date_add(rental_date, INTERVAL 8 DAY) AS Ausleihende FROM rental

Die Berechnung solcher Intervalle ist für Abfragen sehr hilfreich. Z. B. um alle Datensätze auszugeben, in denen ein Film 8 Tage oder länger ausgeliehen wurde:

SELECT rental_id, rental_date, return_date, DATEDIFF(return_date, rental_date) AS Ausleihdauer FROM rental

WHERE return_date > date_add(rental_date, INTERVAL 8 DAY)

  • Zeitfunktionen

Analog zu den Datumsfunktionen kann mit folgenden Funktionen auch nur ein Teil des Zeitwertes ausgegeben werden:

HOUR(date): gibt die Stundedes angegebenen Datums aus

MINUTE(date): gibt den Monat des angegebenen Datums aus

SECOND(date): gibt den Tag des angegebenen Datums aus

SELECT CURRENT_TIME, HOUR(CURRENT_TIME), MINUTE(CURRENT_TIME), SECOND(CURRENT_TIME)

Bei einer Datumsspalte ohne Uhrzeit sind die Zeitfunktionen unzulässig.

Die Funktionen von oben, wie TIMESTAMPDIFF können analog auch Zeitspannen in Stunden etc. berechnen.

(Visited 1.687 times, 1 visits today)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert