Dans MySQL, DATETIME et TIMESTAMP sont des types de données couramment utilisés pour stocker des valeurs temporelles. Bien que les deux servent à stocker la date et l’heure, il existe des différences fondamentales entre eux qui affectent leur utilisation. Cet article explorera les différences entre DATETIME et TIMESTAMP, et comment surmonter certaines limitations de DATETIME pour tirer parti des avantages de TIMESTAMP.
Pour surmonter certaines limitations du type de données DATETIME, vous pouvez suivre ces stratégies :
Pour résoudre le problème de DATETIME qui n'adhère pas au fuseau horaire, vous pouvez standardiser toutes les opérations temporelles au niveau de la base de données et de l'application pour utiliser UTC.
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;
Pour mettre à jour automatiquement les valeurs DATETIME lorsqu'une ligne est modifiée, vous pouvez utiliser des déclencheurs.
CREATE TRIGGER before_update_example_table BEFORE UPDATE ON example_table FOR EACH ROW BEGIN SET NEW.updated_at = NOW(); END;
Pour définir automatiquement les valeurs DATETIME lors de l'insertion, vous pouvez attribuer des valeurs par défaut à l'aide de la fonction NOW().
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 );
Si une plus grande précision pour les heures est nécessaire, vous pouvez utiliser DATETIME(6) ou TIMESTAMP(6) pour stocker les heures jusqu'à une précision de la microseconde.
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) );
Assurez-vous que votre application gère correctement les heures en convertissant toutes les heures en UTC avant de les stocker et en les reconvertissant en heure locale lors de leur affichage à l'utilisateur.
// 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');
En suivant ces stratégies, vous pouvez tirer parti des avantages de TIMESTAMP tout en utilisant DATETIME, ce qui facilite la gestion efficace et efficiente des valeurs temporelles.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!