< < Vorheriger BeitragNächster Beitrag > >

Datums- und Zeitfunktionen




 

In diesem Referat stellt man die wichtigsten Datum- und Zeitfunktionen in SQL dar.

1. 1. Datum und Zeit als Typ in SQL

Datum und Zeit werden in SQL als ein spezifischer Typ behandelt. Um ein Beispiel zu zeigen, können wir mit den folgenden Funktionen die aktuelle Zeit erstellen.

NOW()

Die Zeit, an der die Ausführung der ganzen Anweisung anfängt, wird gezeigt.

CURRENT_TIMESTAMP()

LOCALTIME()

LOCALTIMESTAMP()

SYSDATE()

Die Zeit, an der die Funktion ausgeführt wird.

 
 

NOW(), CURRENT_TIMESTAMP(), LOCALTIME() und LOCALTIMESTAMP() sind Synonyma, während SYSDATE() etwa unterschiedlich ist. Den Unterschied zwischen NOW() und SYSDATE() kann man mit der Funktion SLEEP() darstellen, durch die die Ausführung von Funktionen verschoben werden kann.

vgl.:

Durch die Funktion SLEEP(3) wird eine 3 Sekunden Pause gemacht. Aber der Unterschied wird nicht bei NOW() gezeigt, denn die Funktion stellt dar, wann die Ausführung der ganzen Anweisung angefangen hat.

 

 

2. 2. Datum und Zeit zeigen

DATE(expr)

Datum zeigen

TIME(expr)

Zeit zeigen

(expr bedeutet "expression" hier)

 

Funktionen in Bezug auf das Zeigen des Datums:

Tag

DAYOFWEEK(date)

Die Nummer des Wochentages (Die Numerierung basiert auf „the ODBC standard“, d.h. 1 = Sonntag, 2 = Montag, ..., 7 = Samstag)

DAYNAME(date)

Der Wochentag

DAY()/DAYOFMONTH(date)

Der Tag im Monat

DAYOFYEAR(date)

Der Tag im Jahr

Woche

WEEK(date)

Die Nummer der Woche im Jahr

Monat

MONTH(date)

Die Nummer des Monats im Jahr

MONTHNAME(date)

Der Name des Monats im Jahr

Jahr

YEAR(date)

Das Jahr

 

Funktionen in Bezug auf das Zeigen der Zeit:

HOUR(time)

Die Stunde

MINUTE(time)

Die Minute

SECOND(time)

Die Sekunde

MICROSECOND(time)

Die Mikrosekunde

 

Mit der Funktion EXTRACT(unit FROM date) kann man einen Teil des Datums herausziehen:

  • Dasjenige, das herausgezogen wird, muss ein kontinuierlicher Teil des Datums sein, d.h. bei der Anweisung DAY_MICROSECOND werden Tag, Stunde, Minute, Sekunde und Mikrosekunde statt nur Tag und Mikrosekunde gezeigt.
  • In SQL sind ausschließlich die folgenden Werte für unit ausführbar. Anweisungen mit unausführbaren unit wie SELECT EXTRACT(YEAR_DAY FROM "1879-3-14 1:59:26.535897") werden in SQL nicht erlaubt.

Tabelle 1: alle mögliche Werte für unit

MICROSECOND

SECOND_MICROSECOND

SECOND

MINUTE_MICROSECOND

MINUTE

MINUTE_SECOND

HOUR

HOUR_MICROSECOND

DAY

HOUR_SECOND

WEEK

HOUR_MINUTE

MONTH

DAY_MICROSECOND

QUARTER

DAY_SECOND

YEAR

DAY_MINUTE

 

DAY_HOUR

 

YEAR_MONTH

(Quelle: MySQL - 12.7 Date and Time Functions)

 

 

3. 3. Datum und Zeit berechnen

Funktionen, mit denen man Datum und Zeit berechnen kann:

ADDDATE(date, INTERVAL expr unit) /DATE_ADD(date, INTERVAL expr unit)

Datums und Zeitwerte addieren

SUBDATE(date, INTERVAL expr unit) /DATE_SUB(date, INTERVAL expr unit)

Datums und Zeitwerte subtrahieren

  • Alle mögliche Werte für unit und die Formate des entsprechenden expr werden in der folgenden Tabelle dargestellt (ähnlich wie Tabelle 1, s.o.).
  • Wenn unit DAY ist, kann man „INTERVAL n DAY“ als „n“ vereinfachen.
  • expr kann negativ sein.

Tabelle 2: Alle mögliche Werte für unit und die Formate des entsprechenden expr

unit Value

Expected expr Format

MICROSECOND

MICROSECONDS

SECOND

SECONDS

MINUTE

MINUTES

HOUR

HOURS

DAY

DAYS

WEEK

WEEKS

MONTH

MONTHS

QUARTER

QUARTERS

YEAR

YEARS

SECOND_MICROSECOND

'SECONDS.MICROSECONDS'

MINUTE_MICROSECOND

'MINUTES:SECONDS.MICROSECONDS'

MINUTE_SECOND

'MINUTES:SECONDS'

HOUR_MICROSECOND

'HOURS:MINUTES:SECONDS.MICROSECONDS'

HOUR_SECOND

'HOURS:MINUTES:SECONDS'

HOUR_MINUTE

'HOURS:MINUTES'

DAY_MICROSECOND

'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS'

DAY_SECOND

'DAYS HOURS:MINUTES:SECONDS'

DAY_MINUTE

'DAYS HOURS:MINUTES'

DAY_HOUR

'DAYS HOURS'

YEAR_MONTH

'YEARS-MONTHS'

(Quelle: MySQL - 12.7 Date and Time Functions)

 

Funktionen, mit denen man vor allem Zeit berechnen kann:

ADDTIME(expr1, expr2)

Zeitwerte addieren

SUBTIME(expr1, expr2)

Zeitwerte subtrahieren

  • expr1 kann entweder Datumswert oder Zeitwert sein.
  • Bei expr2 soll es keine Monatsanzahl geben. Anweisungen wie SUBTIME("3:14:15.926535", "2-7 18:28:18.284590") wird zu unerwarteten Ergebnissen führen.
  • Beide expr1 und expr2 können negativ sein.

 

 

4. 4. Zeiträume berechnen

DATEDIFF(expr1, expr2)

Zwei Daten voneinander subtrahieren

  • Die Funktion subtrahiert expr2 von expr1, d.h. expr1 - expr2. Das Ergebnis kann negativ sein.
  • Nur die Daten (Jahr, Monat, Tag) werden berechnet, ohne dass die anderen Teile (Stunde, Minute, Sekunde, Mikrosekunde) berücksichtigt zu werden.

 

TIMEDIFF(expr1, expr2)

Zwei Zeitpunkte voneinander subtrahieren

  • Die Funktion subtrahiert expr2 von expr1, d.h. expr1 - expr2. Das Ergebnis kann negativ sein.
  • Im Ergebnis wird kein Datum gezeigt. Alles wird in Stunden umgerechnet.

 

TIMESTAMPDIFF(unit, expr1, expr2)

Zeitintervall subtrahieren

  • Alle mögliche Werte von unit sind MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR.
  • Im Vergleich zu TIMEDIFF, TIMESTAMPDIFF subtrahiert TIMESTAMPDIFF(expr1, expr2) expr1 von expr2, d.h. expr2 - expr1. Das Ergebnis kann negativ sein.
  • Das Ergebnis wird auf ganze Zahl abgerundet, z.B. 59.999999 Sekunden werden 0 Minute umgerechnet.
  • expr1 und expr2 dürfen Daten ohne Zeit sein. Gegebenfalls kann Datum wie „1879-3-14“ als „1879-3-14 00:00:00“ betrachtet werden.

 

 

5. 5. Literatur

Stephan Lücke, Christian Riepl, Caroline Trautmann: Korpus im Text

MySQL 5.7 Reference Manual: Date and Time Functions

 

 

< < Vorheriger BeitragNächster Beitrag > >

Schreibe einen Kommentar