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.
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
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;
Daten einfügen:
INSERT INTO time_zone_test(date_time,time_stamp) VALUES(NOW(),NOW());
Daten anzeigen:
select dsqlate_time,time_stamp from time_zone_test;
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';
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 SitzungszeitzoneSELECT @@session.time_zone;
SET time_zone = 'Europe/Helsinki'; SET time_zone = "+00:00";
DateTime
: 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59Timestamp
: 1970-01 -01 00:00:01 ~ 2037-12-31 23:59:59DateTime
:1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
Timestamp
3. Schauen wir uns noch einmal den Speicherplatz des MySQL-Datumstyps an
Es 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?
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;
5. Zusammenfassung
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:
[mysqld] sql-mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
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!