Heim > Datenbank > MySQL-Tutorial > So speichern Sie die Zeit in der MySQL-Datenbank

So speichern Sie die Zeit in der MySQL-Datenbank

WBOY
Freigeben: 2023-06-03 16:00:21
nach vorne
1855 Leute haben es durchsucht


    1. Denken Sie daran, keine Zeichenfolgen zum Speichern von Daten zu verwenden.

    Zeichenfolgen nehmen mehr Platz ein!

    Die Datumsvergleichseffizienz der Zeichenfolgenspeicherung ist relativ gering (Vergleich Zeichen für Zeichen) und kann nicht mithilfe datumsbezogener APIs berechnet und verglichen werden.

    2. Auswahl zwischen Datetime und Timestamp

    Datetime und Timestamp sind zwei ähnliche Datentypen zum Speichern von Zeit, die von MySQL bereitgestellt werden.

    Wie kann man zwischen ihnen wählen?

    Normalerweise bevorzugen wir Timestamp

    2.1 Der DateTime-Typ hat keine Zeitzoneninformationen

    DateTime-Typ hat keine Zeitzoneninformationen (die Zeitzone ist irrelevant)

    Wenn sich Ihre Zeitzone ändert, z. B. wenn Ihr Server die Adresse oder die Clientverbindungszeit ändert Zone Wenn diese Option festgelegt ist, führt dies dazu, dass die Zeit, die Sie aus der Datenbank lesen, falsch ist.

    Der Zeitstempel bezieht sich auf die Zeitzone.

    Der Wert des Felds Zeitstempeltyp ändert sich mit der Änderung der Serverzeitzone und wird automatisch in die entsprechende Zeit konvertiert. Vereinfacht ausgedrückt ist der Wert dieses Felds in verschiedenen Zeitzonen unterschiedlich bei Abfrage aufzeichnen.

    Eine praktische Demonstration unten!

    Tabelle SQL-Anweisung erstellen:

    CREATE TABLE `time_zone_test` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `date_time` datetime DEFAULT NULL,
      `time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    Nach dem Login kopieren

    Daten einfügen:

    INSERT INTO time_zone_test(date_time,time_stamp) VALUES(NOW(),NOW());
    Nach dem Login kopieren

    Daten anzeigen:

    select dsqlate_time,time_stamp from time_zone_test;
    Nach dem Login kopieren

    Ergebnis:

    +------- +------+
    |. date_time |.time_stamp |
    +------------------ - -+------+
    |. 2020-01-11 09:53:32 |. 2020-01-11 09:53:32 |
    + -------+---------------------+

    Aktuelle Uhrzeit ändern Sitzungsbereich:

    set time_zone='+8:00';
    Nach dem Login kopieren

    Daten erneut anzeigen:

    +---------------------+------------- --------+
    |. date_time                                                      ----------+
    |. 2020-01-11 09: 53:32 |. 11.01.2020 17:53:32 |
    +- ------------ --------+---------------------+

    Erweiterung: Einige Allgemeine SQL-Befehle zu MySQL-Zeitzoneneinstellungen

    1. Überprüfen Sie die aktuelle Sitzungszeitzone

        SELECT @@session.time_zone;
    Nach dem Login kopieren

    3. Legen Sie die globale Zeitzone fest

        SET time_zone = 'Europe/Helsinki';
        SET time_zone = "+00:00";
    Nach dem Login kopieren

    2.2 DateTime-Typ verbraucht mehr Speicherplatz

    Timestamp benötigt nur 4 Byte Speicherplatz, DateTime benötigt jedoch 8 Byte Speicherplatz. Allerdings wirft dieser Ansatz auch das Problem auf, dass Timestamp einen begrenzteren Zeitbereich hat.

    DateTime: 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

    • Timestamp: 1970-01 -01 00:00:01 ~ 2037-12-31 23:59:59

      DateTime :1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

    • Timestamp

    • Timestamp weist geringfügige Unterschiede in verschiedenen Versionen von MySQL auf.

    3. Schauen wir uns noch einmal den Speicherplatz des MySQL-Datumstyps an

    Die folgende Abbildung zeigt den Speicherplatz, den der Datumstyp in der MySQL 5.6-Version belegt:

    So speichern Sie die Zeit in der MySQL-DatenbankEs ist ersichtlich, dass MySQL nach 5.6. 4 hat noch einen weiteren Bedarf 0 ~ 3 Die Anzahl der Dezimalstellen im Byte. DataTime und Timestamp belegen beim Speichern unterschiedlichen Speicherplatz.

    Der Einfachheit halber verwenden wir in diesem Artikel immer noch die Standardeinstellung, dass Timestamp nur 4 Byte Speicherplatz benötigt, DateTime jedoch 8 Byte Speicherplatz.

    4. Ist ein numerischer Zeitstempel die bessere Wahl?

    Oft verwenden wir auch Werte vom Typ int oder bigint, also Zeitstempel, um die Zeit darzustellen.

    Diese Speichermethode bietet einige Vorteile des Zeitstempeltyps. Die Verwendung zum Sortieren und Vergleichen von Daten ist effizienter und außerdem systemübergreifend sehr praktisch. Schließlich handelt es sich nur um einen gespeicherten Wert. Der Nachteil liegt ebenfalls auf der Hand: Die Lesbarkeit der Daten ist zu schlecht und man kann die konkrete Zeit nicht intuitiv erkennen.

    Die Definition des Zeitstempels lautet wie folgt:

    Die Definition des Zeitstempels ist, von einer Basiszeit aus zu beginnen. Diese Basiszeit ist „1970-1-1 00:00:00 +0:00“. Zeit Ursprünglich ausgedrückt als Ganzzahl, gemessen in Sekunden, nimmt diese Zeit-Ganzzahl im Laufe der Zeit weiter zu. Auf diese Weise benötige ich nur einen Wert, um die Zeit perfekt darzustellen, und dieser Wert ist ein absoluter Wert. Das heißt, egal wo Sie sich in irgendeinem Winkel der Erde befinden, der Zeitstempel, der die Zeit darstellt, ist derselbe und wird generiert. Die Werte sind alle gleich und es gibt kein Zeitzonenkonzept, sodass während der Übertragung der Zeit im System keine zusätzliche Konvertierung erforderlich ist. Sie wird nur in die Ortszeit im Zeichenfolgenformat konvertiert, wenn sie dem Benutzer angezeigt wird.

    Tatsächliche Operationen in der Datenbank:
        SELECT @@global.time_zone;
    Nach dem Login kopieren

    5. Zusammenfassung

    Zeitstempel empfehlen, da die numerische Darstellung der Zeit nicht intuitiv genug ist

    Jede Methode hat ihre eigenen Vorteile und die beste Methode basiert auf dem tatsächlichen Szenario. Lassen Sie uns einen einfachen Vergleich dieser drei Methoden durchführen, um Ihnen bei der Auswahl des richtigen Datentyps für die Speicherzeit in der tatsächlichen Entwicklung zu helfen:

    6.设置mysql date类型字段默认值支持0000格式

    [mysqld]
    sql-mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    Nach dem Login kopieren

    Das obige ist der detaillierte Inhalt vonSo speichern Sie die Zeit in der MySQL-Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:yisu.com
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage