Daten und Zeiten sind wichtig, sie helfen, die Dinge zu organisieren und sind ein wesentlicher Aspekt jeder Softwareoperation.
Die effiziente Arbeit mit ihnen in der Datenbank kann manchmal verwirrend erscheinen, unabhängig davon, ob sie über die verschiedenen Zeitzonen hinweg funktioniert, Daten hinzufügt / entfernt und andere Vorgänge ausgeführt werden.
Lernen Sie die verschiedenen MySQL-Funktionen kennen, mit denen Sie Datums- und Uhrzeitangaben in Ihrer Datenbank einfach handhaben und verwalten können.
Arbeiten mit Zeitzonen
Um die Standardisierung zu gewährleisten, sollten Sie immer nur mit Datums- und Uhrzeitangaben in der UTC-Zeitzone arbeiten. Jedes Mal, wenn Sie eine Verbindung zur MySQL-Datenbank herstellen, sollten Sie die Zeitzone auf UTC umstellen. Dies kann mit der folgenden SQL-Anweisung erfolgen:
SET TIME_ZONE = '+0: 00'
Da jetzt alle Daten in UTC gespeichert werden, wissen Sie immer, womit Sie arbeiten, was die Dinge einfacher und unkomplizierter macht.
Bei Bedarf können Sie leicht
Konvertieren Sie die Zeitzone von jedem Datum / Uhrzeit- / Zeitstempelwert mit dem Handy CONVERT_TZ () MySQL-Funktion. Sie müssen zuerst den Offset kennen, z. B. PST an der Westküste Nordamerikas ist UTC -08: 00, also können Sie Folgendes verwenden:PolyTime, eine neue App von MakeUseOf, erleichtert den Vergleich von Zeitzonen auf der ganzen Welt. Hier erfahren Sie, was Sie damit machen können und wie es funktioniert.
SELECT CONVERT_TZ ('2021-02-04 21:47:23', '+0: 00', '-8: 00');
Das führt zu 2021-02-04 13:47:23 das ist genau richtig. Die drei Argumente gingen an CONVERT_TZ () Sind erstens die Datums- / Zeitstempel, mit denen Sie beginnen (verwenden Sie now () für die aktuelle Zeit), ist dies immer der zweite '+0:00' da alle Daten in der Datenbank auf UTC gezwungen werden und der letzte der Versatz ist, in den wir das Datum konvertieren möchten.
Daten hinzufügen / subtrahieren
Oft müssen Sie Daten hinzufügen oder von ihnen subtrahieren, z. B. wenn Sie Datensätze von vor einer Woche abrufen müssen, oder etwas planen in einem Monat.
Zum Glück hat MySQL das ausgezeichnete DATE_ADD () und DATE_SUB () Funktionen, die diese Aufgabe extrem einfach machen. Beispielsweise können Sie mit der SQL-Anweisung zwei Wochen vom aktuellen Datum abziehen:
SELECT DATE_SUB (now (), Intervall 2 Wochen);
Wenn Sie stattdessen einem vorhandenen Zeitstempel drei Tage hinzufügen möchten, verwenden Sie:
SELECT DATE_ADD ('2021-02-07 11:52:06', Intervall 3 Tage);
Beide Funktionen funktionieren gleich, das erste Argument ist der Zeitstempel, mit dem Sie beginnen, und das zweite Argument ist das Intervall zum Addieren oder Subtrahieren. Das zweite Argument wird immer gleich formatiert, beginnend mit dem Wort Intervall gefolgt von einem numerischen Wert und dem Intervall selbst, das eines der folgenden sein kann: Sekunde, Minute, Stunde, Tag, Woche, Monat, Quartal, Jahr.
Wenn Sie beispielsweise alle Anmeldungen abrufen möchten, die in den letzten 34 Minuten aufgetreten sind, können Sie eine SQL-Anweisung verwenden, z. B.:
SELECT * FROM logins WHERE Anmeldedatum> = DATE_SUB (now (), Intervall 45 Minuten);
Wie Sie sehen können, würde dies alle Datensätze aus dem abrufen Logins Tabelle mit einem Anmeldedatum, das größer als die aktuelle Zeit minus 45 Minuten oder mit anderen Worten die letzten 45 Minuten ist.
Holen Sie sich den Unterschied zwischen Daten
Manchmal müssen Sie herausfinden, wie viel Zeit zwischen zwei Daten vergangen ist. Mit dem können Sie ganz einfach die Anzahl der Tage zwischen zwei verschiedenen Daten ermitteln DATEDIFF Funktion, wie die folgende SQL-Anweisung:
SELECT DATEDIFF (now (), '2020-12-15');
Das DATEDIFF Die Funktion verwendet zwei Argumente, die beide Datums- / Zeitstempel sind, und gibt die Anzahl der Tage zwischen ihnen an. Das obige Beispiel zeigt die Anzahl der Tage, die vom 15. Dezember 2020 bis heute vergangen sind.
Um die Anzahl der Sekunden zwischen zwei Daten zu ermitteln, muss die TO_SECONDS () Funktion kann nützlich sein, zum Beispiel:
SELECT TO_SECONDS (now ()) - TO_SECONDS ('2021-02-05 11:56:41');
Dies ergibt die Anzahl der Sekunden zwischen den beiden angegebenen Daten.
Segmente aus Daten extrahieren
Es gibt verschiedene MySQL-Funktionen, mit denen Sie bestimmte Segmente einfach aus Datumsangaben extrahieren können, z. B. wenn Sie nur den Monat, den Tag des Jahres oder die Stunde möchten. Hier einige Beispiele für solche Funktionen:
SELECT MONTH ('2021-02-11 15:27:52');
STUNDE AUSWÄHLEN (jetzt ());
SELECT DAYOFYEAR ('2021-07-15 12:00:00');
Die obigen SQL-Anweisungen würden dazu führen 02, die aktuelle Stunde und 196 Der 15. September ist der 196. Tag des Jahres. Hier ist eine Liste aller verfügbaren Datumsextraktionsfunktionen, die jeweils nur ein Argument enthalten, wobei das Datum extrahiert wird aus:
- ZWEITE()
- MINUTE ()
- STUNDE()
- TAG()
- WOCHE () - Nummer 0 - 52 definiert die Woche innerhalb des Jahres.
- MONAT ()
- QUARTER () - Nummer 1 - 4 definiert das Quartal des Jahres.
- JAHR ()
- DAYOFYEAR () - Der Tag des Jahres (z. 15. September = 196).
- LAST_DAY () - Der letzte Tag im angegebenen Monat.
- DATE () - Das Datum im Format JJJJ-MM-TT ohne Uhrzeit.
- TIME () Die Uhrzeit im Format HH: II: SS ohne Datum.
- TO_DAYS () - Die Anzahl der Tage seit dem 0.
- TO_SECONDS () - Die Anzahl der Sekunden seit AD 0.
- UNIX_TIMESTAMP () - Die Anzahl der Sekunden seit der Epoche (1. Januar 1970)
Wenn Sie beispielsweise nur den Monat und das Jahr abrufen möchten, in denen alle Benutzer erstellt wurden, können Sie eine SQL-Anweisung verwenden, z. B.:
SELECT id, MONTH (created_at), YEAR (created_at) FROM users;
Dies würde alle Datensätze innerhalb der abrufen Benutzer Tabelle und zeigen Sie die ID #, den Monat und das Jahr, in dem jeder Benutzer erstellt wurde.
Gruppieren von Datensätzen nach Datumszeitraum
Eine hervorragende Verwendung von Datumsfunktionen ist die Möglichkeit, Datensätze nach Datumszeitraum zu gruppieren GRUPPIERE NACH innerhalb Ihrer SQL-Anweisungen. Vielleicht möchten Sie beispielsweise den Gesamtbetrag aller Bestellungen im Jahr 2020 nach Monaten gruppiert abrufen. Sie können eine SQL-Anweisung verwenden, z. B.:
SELECT MONTH (created_at), SUM (Betrag) FROM Bestellungen WHERE created_at ZWISCHEN '2020-01-01 00:00:00' UND '2020-12-31 23:59:59' GROUP BY MONTH (created_at);
Dies würde alle Bestellungen abrufen, die im Jahr 2020 aufgegeben wurden, sie nach dem Monat gruppieren, in dem sie erstellt wurden, und 12 Datensätze zurückgeben, die den Gesamtbetrag zeigen, der jeden Monat des Jahres bestellt wurde.
Bitte beachten Sie, dass es für eine bessere Indexleistung immer am besten ist, Datumsfunktionen wie z JAHR() innerhalb der WHERE-Klausel von SQL-Anweisungen, und verwenden Sie stattdessen die ZWISCHEN Operator wie im obigen Beispiel gezeigt.
Nie wieder mit Daten verwechselt werden
Mit den oben genannten Kenntnissen können Sie jetzt effizient mit Datums- und Uhrzeitvorgängen in einer Vielzahl von Anwendungsfällen arbeiten, diese übersetzen und ausführen.
Denken Sie daran, der Einfachheit halber immer UTC zu verwenden, wenn Sie mit Datumsangaben arbeiten, und verwenden Sie die oben genannten Tipps, um effizient zu verwalten Daten in Ihrer Software, unabhängig davon, ob einfache Berechnungen durchgeführt oder Berichte nach Datum gruppiert werden sollen Perioden.
Wenn Sie mit SQL noch nicht vertraut sind, sollten Sie diese überprüfen wesentliche SQL-Befehle um Ihre SQL-Nutzung zu verbessern.
In diesem Handbuch werden die Elemente eines professionellen Berichts untersucht und die Strukturierung, Gestaltung und Fertigstellung Ihres Dokuments in Microsoft Word überprüft.
- Nicht spezifiziert
Abonniere unseren Newsletter
Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!
Noch ein Schritt…!
Bitte bestätigen Sie Ihre E-Mail-Adresse in der E-Mail, die wir Ihnen gerade gesendet haben.