Fonction NOW() de MySQL
La fonction `NOW()` de MySQL renvoie la date et l'heure actuelles au format `YYYY-MM-DD HH:MM:SS`. Il est couramment utilisé pour capturer le moment exact où une instruction SQL est exécutée. Le résultat est basé sur le fuseau horaire actuel du serveur, sauf configuration contraire.
Utilisation
La fonction `NOW()` est utilisée lorsque vous avez besoin de l'horodatage actuel pour des opérations telles que l'insertion de données, les mises à jour ou la journalisation dans des contextes SQL tels que les instructions `SELECT` ou les procédures stockées. Il est souvent utilisé pour suivre le moment de la création ou de la modification d'un document.
sql
SELECT NOW();
Dans cette syntaxe, `NOW()` produit la date et l'heure actuelles au moment de l'exécution de la requête.
Exemples
1. Récupérer la date et l'heure actuelles
sql
SELECT NOW();
Cet exemple renvoie la date et l'heure actuelles du serveur.
2. Insérer l'heure actuelle
sql
INSERT INTO logs (event, created_at)
VALUES ('User login', NOW());
Ici, la fonction `NOW()` enregistre l'heure exacte à laquelle un utilisateur se connecte, en la stockant dans la colonne `created_at`.
3. Mise à jour avec l'horodatage actuel
sql
UPDATE orders
SET last_modified = NOW()
WHERE order_id = 102;
Cet exemple met à jour la colonne `last_modified` d'un ordre spécifique avec l'horodatage actuel, indiquant quand la dernière modification a été effectuée.
Conseils et bonnes pratiques
- A utiliser dans INSERT et UPDATE. Utilisez `NOW()` pour horodater automatiquement les enregistrements lors de leur création ou de leur modification.
- Combinez avec les paramètres du fuseau horaire. Assurez-vous que les paramètres du fuseau horaire de votre base de données correspondent aux besoins de votre application pour des horodatages précis. Utilisez des fonctions comme `CONVERT_TZ()` pour gérer efficacement les fuseaux horaires.
- Tenez compte de l'impact sur les performances. La fonction `NOW()` est évaluée une fois par instruction, et non par ligne, ce qui réduit les surcharges de performance dans les requêtes volumineuses.
- Utiliser pour la journalisation et l'audit. Utilisez `NOW()` pour suivre efficacement l'activité de vos applications à des fins de débogage et d'audit.
- Compatibilité des types de données. La fonction `NOW()` peut être stockée dans les colonnes `DATETIME` et `TIMESTAMP`, chacune ayant des propriétés différentes en ce qui concerne la gestion des fuseaux horaires et la mise à jour automatique.
- Considérations relatives aux transactions. Faites attention à la façon dont les valeurs de `NOW()` peuvent varier entre les différentes déclarations d'une transaction si elles sont exécutées à des moments différents.
- A distinguer de CURRENT_TIMESTAMP(). Bien que `NOW()` et `CURRENT_TIMESTAMP()` soient souvent utilisés de manière interchangeable, il existe des différences subtiles ; `CURRENT_TIMESTAMP()` peut être ajusté par les attributs `DEFAULT CURRENT_TIMESTAMP` et `ON UPDATE CURRENT_TIMESTAMP` dans les définitions de colonnes.