MySQL: Verwendung und Verbesserung von „DATETIME' und „TIMESTAMP'.

王林
Freigeben: 2024-07-19 12:40:08
Original
499 Leute haben es durchsucht

MySQL: Using and Enhancing `DATETIME` and `TIMESTAMP`

Einführung

In MySQL sind DATETIME und TIMESTAMP häufig verwendete Datentypen zum Speichern von Zeitwerten. Obwohl beide zum Speichern von Datum und Uhrzeit dienen, gibt es grundlegende Unterschiede zwischen ihnen, die sich auf ihre Verwendung auswirken. In diesem Artikel werden die Unterschiede zwischen DATETIME und TIMESTAMP untersucht und wie einige Einschränkungen von DATETIME überwunden werden können, um die Vorteile von TIMESTAMP zu nutzen.

Unterschiede zwischen DATETIME und TIMESTAMP

Reichweite:
  • DATETIME: Kann Werte von „1000-01-01 00:00:00“ bis „9999-12-31 23:59:59“ speichern.
  • TIMESTAMP: Kann Werte von „1970-01-01 00:00:01“ bis „2038-01-19 03:14:07“ speichern.
Lagerung:
  • DATETIME: Wird unverändert im Datums- und Uhrzeitformat gespeichert, ohne auf die Zeitzone angewiesen zu sein. Es erfordert 8 Byte Speicherplatz.
  • TIMESTAMP: Wird als Ganzzahl gespeichert, die die Anzahl der Sekunden seit dem 01.01.1970 um 00:00:00 UTC darstellt. Es erfordert 4 Byte Speicherplatz.
Zeitzone:
  • DATETIME: Hängt nicht von der Zeitzone ab und speichert den Wert unverändert.
  • TIMESTAMP: Wird von der aktuellen Zeitzone des MySQL-Servers beeinflusst. Beim Einfügen oder Abrufen von Werten werden diese automatisch zwischen der Ortszeit und UTC umgerechnet.
Automatische Updates:
  • DATETIME: Unterstützt keine automatischen Aktualisierungen direkt, wenn eine Zeile geändert wird.
  • TIMESTAMP: Kann mithilfe der Optionen DEFAULT CURRENT_TIMESTAMP und ON UPDATE CURRENT_TIMESTAMP so eingestellt werden, dass der Wert automatisch aktualisiert wird, wenn eine Zeile geändert wird.

Verbesserung der DATETIME-Nutzung

Um einige Einschränkungen des DATETIME-Datentyps zu überwinden, können Sie diese Strategien befolgen:

1. Standardisierung der Zeitzone

Um das Problem zu lösen, dass DATETIME nicht der Zeitzone entspricht, können Sie alle zeitlichen Vorgänge auf Datenbank- und Anwendungsebene standardisieren, um UTC zu verwenden.

Einstellen der Datenbank auf UTC:
SET GLOBAL time_zone = '+00:00'; SET time_zone = '+00:00';
Nach dem Login kopieren
Konvertieren von Werten in UTC beim Einfügen:
INSERT INTO example_table (event_time) VALUES (CONVERT_TZ('2024-06-19 12:30:00', 'Your/Timezone', '+00:00'));
Nach dem Login kopieren
Konvertieren von Werten von UTC in Ortszeit beim Abrufen:
SELECT CONVERT_TZ(event_time, '+00:00', 'Your/Timezone') as local_event_time FROM example_table;
Nach dem Login kopieren
2. Automatische Updates

Um DATETIME-Werte automatisch zu aktualisieren, wenn eine Zeile geändert wird, können Sie Trigger verwenden.

Erstellen eines Triggers zum Aktualisieren des Felds bei Änderung:
CREATE TRIGGER before_update_example_table BEFORE UPDATE ON example_table FOR EACH ROW BEGIN SET NEW.updated_at = NOW(); END;
Nach dem Login kopieren
3. Verwendung von Standardwerten

Um DATETIME-Werte beim Einfügen automatisch festzulegen, können Sie mit der Funktion NOW() Standardwerte zuweisen.

Standardfelder festlegen:
CREATE TABLE example_table ( id INT PRIMARY KEY AUTO_INCREMENT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );
Nach dem Login kopieren
4. Präzision im Umgang

Wenn eine höhere Präzision für Zeiten erforderlich ist, können Sie DATETIME(6) oder TIMESTAMP(6) verwenden, um Zeiten mit einer Genauigkeit von Mikrosekunden zu speichern.

Erstellen einer Tabelle mit Mikrosekundengenauigkeit:
CREATE TABLE example_table ( id INT PRIMARY KEY AUTO_INCREMENT, created_at DATETIME(6) DEFAULT CURRENT_TIMESTAMP(6), updated_at DATETIME(6) DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) );
Nach dem Login kopieren
5. Bearbeitungszeiten im Antrag

Stellen Sie sicher, dass Ihre Anwendung Zeiten korrekt verarbeitet, indem Sie alle Zeiten vor dem Speichern in UTC umwandeln und sie beim Anzeigen für den Benutzer wieder in Ortszeit umwandeln.

Beispiel in PHP:
// Setting the application time zone to UTC date_default_timezone_set('UTC'); // Storing the current time as UTC $current_time_utc = date('Y-m-d H:i:s'); $query = "INSERT INTO example_table (event_time) VALUES ('$current_time_utc')"; // Retrieving the time and converting it to local time $event_time_utc = '2024-06-19 12:30:00'; $event_time_local = new DateTime($event_time_utc, new DateTimeZone('UTC')); $event_time_local->setTimezone(new DateTimeZone('Your/Timezone')); echo $event_time_local->format('Y-m-d H:i:s');
Nach dem Login kopieren

Zusammenfassung

  • DATETIME: Wird zum Speichern von Datums- und Uhrzeitangaben ohne Zeitzonenabhängigkeiten verwendet. Geeignet für zukünftige Veranstaltungen oder feste Termine.
  • TIMESTAMP: Wird zur Verfolgung der Zeit relativ zur aktuellen Zeitzone verwendet. Geeignet zum Protokollieren des Zeitpunkts, zu dem Daten eingefügt oder aktualisiert werden.

DATETIME verbessern

  • Standardisierung der Zeitzone: Verwenden Sie UTC, um die Zeiten zu standardisieren.
  • Automatische Updates: Verwenden Sie Trigger, um Felder automatisch zu aktualisieren.
  • Standardwerte: Legen Sie Standardwerte für das Feld DATETIME fest.
  • Präzision: Verwenden Sie DATETIME(6) für eine höhere Präzision.
  • Bearbeitungszeiten in der Anwendung: Zeiten zwischen UTC und Ortszeit korrekt umrechnen.

Indem Sie diese Strategien befolgen, können Sie die Vorteile von TIMESTAMP bei der Verwendung von DATETIME nutzen und so den effizienten und effektiven Umgang mit zeitlichen Werten erleichtern.

Das obige ist der detaillierte Inhalt vonMySQL: Verwendung und Verbesserung von „DATETIME' und „TIMESTAMP'.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
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
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!