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.
Um einige Einschränkungen des DATETIME-Datentyps zu überwinden, können Sie diese Strategien befolgen:
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.
SET GLOBAL time_zone = '+00:00'; SET time_zone = '+00:00';
INSERT INTO example_table (event_time) VALUES (CONVERT_TZ('2024-06-19 12:30:00', 'Your/Timezone', '+00:00'));
SELECT CONVERT_TZ(event_time, '+00:00', 'Your/Timezone') as local_event_time FROM example_table;
Um DATETIME-Werte automatisch zu aktualisieren, wenn eine Zeile geändert wird, können Sie Trigger verwenden.
CREATE TRIGGER before_update_example_table BEFORE UPDATE ON example_table FOR EACH ROW BEGIN SET NEW.updated_at = NOW(); END;
Um DATETIME-Werte beim Einfügen automatisch festzulegen, können Sie mit der Funktion NOW() Standardwerte zuweisen.
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 );
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.
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) );
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.
// 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');
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!