So arbeiten Sie effektiv mit Datums- und Uhrzeitangaben in MySQL

So arbeiten Sie effektiv mit Datums- und Uhrzeitangaben in MySQL

Datums- und Uhrzeitangaben sind wichtig, sie helfen, die Dinge zu organisieren und sind ein integraler Bestandteil jedes Softwarebetriebs.





Die effiziente Arbeit mit ihnen innerhalb der Datenbank kann manchmal verwirrend erscheinen, egal ob es sich um die Arbeit über die verschiedenen Zeitzonen, das Hinzufügen / Subtrahieren von Daten oder andere Vorgänge handelt.





Lernen Sie die verschiedenen verfügbaren MySQL-Funktionen kennen, um Daten / Uhrzeiten in Ihrer Datenbank einfach zu handhaben und zu verwalten.





Arbeiten mit Zeitzonen

Um die Standardisierung zu gewährleisten, sollten Sie immer nur mit Datums-/Zeitangaben in der UTC-Zeitzone arbeiten. Jedes Mal, wenn Sie eine Verbindung zur MySQL-Datenbank herstellen, sollten Sie die Zeitzone auf UTC umstellen, was mit folgendem SQL-Statement möglich ist:

SET TIME_ZONE = '+0:00'

Da alle Daten jetzt in UTC gespeichert werden, wissen Sie immer, womit Sie arbeiten, was die Dinge einfacher und unkomplizierter macht.



So laden Sie YouTube-Videos in die Kamerarolle herunter

Bei Bedarf können Sie einfach Konvertieren Sie die Zeitzone eines beliebigen Datums-/Zeitstempelwerts mit dem Handy CONVERT_TZ() MySQL-Funktion. Sie müssen zuerst den Offset kennen, zum Beispiel ist PST an der Westküste Nordamerikas UTC -08:00, also können Sie Folgendes verwenden:

SELECT CONVERT_TZ('2021-02-04 21:47:23', '+0:00', '-8:00');

Das führt zu 2021-02-04 13:47:23 was genau richtig ist. Die drei an . übergebenen Argumente CONVERT_TZ() sind zuerst die Datumszeit / der Zeitstempel, mit dem Sie beginnen (verwenden Sie now() für die aktuelle Zeit), der zweite ist immer '+0:00' da alle Datumsangaben in der Datenbank auf UTC gezwungen werden und das letzte der Offset ist, in den wir das Datum umwandeln möchten.





Daten hinzufügen/subtrahieren

Oft müssen Sie Datumsangaben hinzufügen oder davon subtrahieren, z. B. wenn Sie Datensätze von vor einer Woche abrufen oder etwas in einem Monat planen möchten.

Zum Glück hat MySQL das ausgezeichnete DATE_ADD() und DATE_SUB () Funktionen, die diese Aufgabe extrem einfach machen. Sie können beispielsweise mit der SQL-Anweisung zwei Wochen vom aktuellen Datum abziehen:





SELECT DATE_SUB(now(), interval 2 week);

Wenn Sie stattdessen drei Tage zu einem vorhandenen Zeitstempel hinzufügen möchten, verwenden Sie Folgendes:

SELECT DATE_ADD('2021-02-07 11:52:06', interval 3 day);

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 einer der folgenden sein kann: Sekunde, Minute, Stunde, Tag, Woche, Monat, Quartal, Jahr.

Wenn Sie als weiteres Beispiel alle Anmeldungen abrufen möchten, die in den letzten 34 Minuten aufgetreten sind, können Sie eine SQL-Anweisung wie die folgende verwenden:

SELECT * FROM logins WHERE login_date >= DATE_SUB(now(), interval 45 minute);

Wie Sie sehen können, werden dadurch alle Datensätze aus dem Anmeldungen Tabelle mit einem Login-Datum größer als die aktuelle Zeit minus 45 Minuten, also die letzten 45 Minuten.

Holen Sie sich den Unterschied zwischen den Daten

Manchmal müssen Sie herausfinden, wie viel Zeit zwischen zwei Daten verstrichen ist. Die Anzahl der Tage zwischen zwei verschiedenen Daten können Sie ganz einfach mit dem DATEDIFF Funktion, wie die folgende SQL-Anweisung:

SELECT DATEDIFF(now(), '2020-12-15');

Die DATEDIFF Die Funktion nimmt zwei Argumente an, 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 verstrichen sind.

Um die Anzahl der Sekunden zwischen zwei Datumsangaben zu erhalten, TO_SECONDS() Funktion kann nützlich sein, zum Beispiel:

SELECT TO_SECONDS(now()) - TO_SECONDS('2021-02-05 11:56:41');

Daraus ergibt sich die Anzahl der Sekunden zwischen den beiden angegebenen Daten.

Segmente aus Datumsangaben extrahieren

Es gibt verschiedene MySQL-Funktionen, mit denen Sie ganz einfach bestimmte Segmente aus Datumsangaben extrahieren können, z. B. wenn Sie nur den Monat, den Tag des Jahres oder die Stunde benötigen. Hier einige Beispiele für solche Funktionen:

SELECT MONTH('2021-02-11 15:27:52'); SELECT HOUR(now()); SELECT DAYOFYEAR('2021-07-15 12:00:00');

Die obigen SQL-Anweisungen führen zu 02 , die aktuelle Stunde und 196 denn der 15. September ist der 196. Tag des Jahres. Hier ist eine Liste aller verfügbaren Datenextraktionsfunktionen, von denen jede nur ein Argument verwendet, das Datum, aus dem extrahiert wird:

- SECOND()
- MINUTE()
- HOUR()
- DAY()
- WEEK() - Number 0 - 52 defining the week within the year.
- MONTH()
- QUARTER() - Number 1 - 4 defining the quarter of the year.
- YEAR()
- DAYOFYEAR() - The day of the year (eg. Sept 15th = 196).
- LAST_DAY() - The last day in the given month.
- DATE() - The date in YYYY-MM-DD format without the time.
- TIME() The time in HH:II:SS format without the date.
- TO_DAYS() - The number of days since A.D. 0.
- TO_SECONDS() - The number of seconds since A.D. 0.
- UNIX_TIMESTAMP() - The number of seconds since the epoch (Jan 1st, 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 wie:

SELECT id, MONTH(created_at), YEAR(created_at) FROM users;

Dies würde alle Datensätze innerhalb der Benutzer Tabelle und zeigen Sie die ID#, den Monat und das Jahr an, in denen jeder Benutzer erstellt wurde.

Gruppieren von Datensätzen nach Datum Zeitraum

Eine hervorragende Verwendung von Datumsfunktionen ist die Möglichkeit, Datensätze nach Datumszeitraum zu gruppieren mit GRUPPIERE NACH innerhalb Ihrer SQL-Anweisungen. Vielleicht möchten Sie beispielsweise den Gesamtbetrag aller Bestellungen im Jahr 2020 nach Monaten gruppiert abrufen. Sie könnten eine SQL-Anweisung verwenden wie:

SELECT MONTH(created_at), SUM(amount) FROM orders WHERE created_at BETWEEN '2020-01-01 00:00:00' AND '2020-12-31 23:59:59' GROUP BY MONTH(created_at);

Dadurch würden alle im Jahr 2020 aufgegebenen Bestellungen abgerufen, nach dem Monat, in dem sie erstellt wurden, gruppiert und 12 Datensätze zurückgegeben, die die Gesamtmenge der Bestellungen in jedem Monat des Jahres anzeigen.

Bitte beachten Sie, dass es für eine bessere Indexleistung immer am besten ist, Datumsfunktionen wie JAHR() innerhalb der WHERE-Klausel von SQL-Anweisungen und verwenden Sie stattdessen die ZWISCHEN Operator wie im obigen Beispiel gezeigt.

Nie wieder mit Dates verwechseln

Mit den oben genannten Kenntnissen können Sie jetzt in einer Vielzahl von Anwendungsfällen effizient mit Datums- und Uhrzeitangaben arbeiten, Operationen übersetzen und ausführen.

Denken Sie daran, der Einfachheit halber immer UTC zu verwenden, wenn Sie mit Datumsangaben arbeiten.

Wenn Sie mit SQL noch nicht vertraut sind, sollten Sie sich diese ansehen wesentliche SQL-Befehle um Ihre SQL-Nutzung zu verbessern.

Teilen Teilen Tweet Email So erstellen Sie professionelle Berichte und Dokumente in Microsoft Word

Dieser Leitfaden untersucht die Elemente eines professionellen Berichts und überprüft die Strukturierung, Gestaltung und Fertigstellung Ihres Dokuments in Microsoft Word.

Weiter lesen
Verwandte Themen Über den Autor Matt Dizak(18 Artikel veröffentlicht) Mehr von Matt Dizak

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um sich zu abonnieren