3.1 Liste der Funktionen zum Arbeiten mit Datum und Uhrzeit
Datum und Uhrzeit gehören zu den am häufigsten in Datenbanken gespeicherten Datentypen. Deshalb ist die Liste der Funktionen für die Arbeit damit sehr umfangreich. Hier sind die beliebtesten:
# | Funktion | Beschreibung |
---|---|---|
1 | CURDATE() | Gibt das aktuelle Datum zurück |
2 | CURTIME() | Gibt die aktuelle Uhrzeit zurück |
3 | JETZT(), LOKALZEIT() | Gibt das aktuelle Datum und die aktuelle Uhrzeit zurück |
4 | JAHR() | Gibt das Jahr vom Datum zurück |
5 | MONAT() | Gibt den Monat eines Datums zurück |
6 | DAY(), DAYOFMONTH() | Gibt den Tag aus einem Datum zurück |
7 | STUNDE() | Gibt nur Stunden vor der Zeit zurück |
8 | MINUTE() | Gibt die Minuten vor Beginn der Zeit an |
9 | ZWEITE() | Gibt Sekunden von der Zeit zurück |
10 | TAGNAME() | Gibt den Namen des Wochentags zurück: Montag, ... |
elf | MONTHNAME() | Gibt den Namen des Monats zurück: Januar, ... |
12 | WOCHE() | Gibt die Woche eines Datums zurück |
13 | WOCHENTAG() | Gibt die Nummer des Wochentags zurück: Montag - 0, Dienstag - 1 |
14 | WEEKOFYEAR() | Gibt die Wochennummer des Jahres zurück |
15 | WOCHENTAG() | Gibt die Nummer des Wochentags zurück: Sonntag – 1, Montag – 2 |
16 | DAYOFYEAR() | Gibt den Tag des Jahres zurück: 1-366 |
17 | DATUM() | Gibt nur das Datum von einem „datetime“-Objekt zurück |
18 | DATUM HINZUFÜGEN() | Fügt Tage zu einem Datum hinzu |
19 | SUBDATE() | Subtrahiert Tage von einem Datum |
20 | ZEIT HINZUFÜGEN() | Fügt Zeit zu Zeit hinzu |
21 | SUBTIME() | Subtrahiert die Zeit von der Zeit |
Ich habe die Funktionen bewusst in kleine Gruppen gruppiert, um das Verständnis für die Arbeit mit ihnen zu erleichtern. Im Folgenden betrachten wir eine Funktion aus jeder Gruppe.
Eine vollständige Liste der Funktionen zum Arbeiten mit Datum und Uhrzeit finden Sie unter dem Link: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
3.2 Aufruffunktionen
Da wir übrigens so viele Funktionen lernen, halte ich es für hilfreich zu erwähnen, dass der Operator SELECT
nicht mit verwendet werden muss FROM
. Es kann den Wert eines beliebigen Ausdrucks zurückgeben. Den allgemeinen Überblick gibt die Vorlage:
SELECT expression
Und wenn Sie eine Funktion aufrufen möchten, müssen Sie Code schreiben wie:
SELECT function(options)
Im Folgenden gebe ich einige Beispiele für die Funktionsweise des Operators SELECT
ohne Rückgriff auf Tabellen:
# | Anfrage | Ergebnis |
---|---|---|
1 | WÄHLEN Sie 1+1 | 2 |
2 | WÄHLEN Sie 13 MOD 5 | 3 |
3 | RAND AUSWÄHLEN() | 0,20771444235715497 |
4 | SELECT CURDATE() | 04.06.2022 |
5 | SELECT CURTIME() | 00:06:02 |
6 | JETZT AUSWÄHLEN() | 04.06.2022 00:06:43 |
Und wie Sie in der obigen Tabelle sehen können, müssen Sie nur eine der Funktionen verwenden, um das aktuelle Datum und die aktuelle Uhrzeit zu erhalten:
CURDATE()
- aktuelles Datum;CURTIME()
- aktuelle Uhrzeit;NOW()
– aktuelles Datum und Uhrzeit.
3.3 Gruppierung der Daten nach Jahr und Monat
Erinnern wir uns an unsere Aufgabentabelle mit Aufgaben für Mitarbeiter. Versuchen wir, Aufgaben aus dieser Tabelle nach Jahren zu gruppieren. Dazu verwenden wir die Funktion YEAR()
, die das Jahr ab dem übergebenen Datum zurückgibt.
Die erste Version unserer Abfrage sieht folgendermaßen aus:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
deadline
FROM task
Das Ergebnis dieser Abfrage wird sein:
Ausweis | Angestellten ID | Name | Jahr | Termin |
---|---|---|---|---|
1 | 1 | Beheben Sie einen Fehler im Frontend | 2022 | 01.06.2022 |
2 | 2 | Beheben Sie einen Fehler im Backend | 2022 | 15.06.2022 |
3 | 5 | Kaffee kaufen | 2022 | 01.07.2022 |
4 | 5 | Kaffee kaufen | 2022 | 01.08.2022 |
5 | 5 | Kaffee kaufen | 2022 | 01.09.2022 |
6 | (NULL) | Räumen Sie das Büro auf | (NULL) | (NULL) |
7 | 4 | Das Leben genießen | (NULL) | (NULL) |
8 | 6 | Das Leben genießen | (NULL) | (NULL) |
Wir können sehen, dass alle Zeilen das gleiche Jahr haben, also verwenden wir zwei Felder – Jahr und Monat. Die zweite Version unserer Abfrage sieht folgendermaßen aus:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
MONTH(deadline) AS month,
deadline
FROM task
Das Ergebnis dieser Abfrage wird sein:
Ausweis | Angestellten ID | Name | Jahr | Monat | Termin |
---|---|---|---|---|---|
1 | 1 | Beheben Sie einen Fehler im Frontend | 2022 | 6 | 01.06.2022 |
2 | 2 | Beheben Sie einen Fehler im Backend | 2022 | 6 | 15.06.2022 |
3 | 5 | Kaffee kaufen | 2022 | 7 | 01.07.2022 |
4 | 5 | Kaffee kaufen | 2022 | 8 | 01.08.2022 |
5 | 5 | Kaffee kaufen | 2022 | 9 | 01.09.2022 |
6 | (NULL) | Räumen Sie das Büro auf | (NULL) | (NULL) | (NULL) |
7 | 4 | Das Leben genießen | (NULL) | (NULL) | (NULL) |
8 | 6 | Das Leben genießen | (NULL) | (NULL) | (NULL) |
Ich werde Ihnen nicht sagen, wie Sie Aufgaben nach Jahr und Monat gruppieren – Sie haben das bereits gelernt: Verwenden Sie den Operator GROUP BY
.