1. Aperçu de la fonction MySQL NOW()
La fonction MySQL NOW() est utilisée pour récupérer facilement la date et l’heure actuelles dans une base de données. En utilisant la fonction NOW(), vous pouvez obtenir des horodatages lors de l’insertion de données ou récupérer des informations temporelles utiles à des fins de journalisation. Bien qu’elle soit simple, c’est un outil très puissant largement utilisé.
Syntaxe de base de la fonction NOW()
La syntaxe de la fonction NOW() est très simple. Vous pouvez récupérer la date et l’heure actuelles avec la requête suivante.
SELECT NOW();
Le résultat d’exécution est renvoyé au format YYYY-MM-DD HH:MM:SS. Par exemple, si la date et l’heure sont le 24 octobre 2024 à 16:30, le résultat serait le suivant.
2024-10-24 16:30:00
La fonction NOW() renvoie la date et l’heure actuelles en fonction du fuseau horaire de la base de données. Cela permet une gestion cohérente du temps dans l’ensemble du système.
Cas d’utilisation courants de la fonction NOW()
La fonction NOW() est particulièrement utile dans les situations suivantes.
- Journalisation : Enregistre automatiquement l’heure à laquelle les données sont modifiées ou insérées.
- Horodatages : Utilisé pour enregistrer le moment des actions des utilisateurs.
- Filtrage dépendant du temps : Extraction des données survenues pendant une période spécifique.
2. Exemples d’utilisation de base de la fonction NOW()
Examinons des exemples de base pour récupérer la date et l’heure actuelles à l’aide de la fonction NOW().
SELECT NOW();
Cette requête renvoie la date et l’heure actuelles. En plus de les récupérer sous forme de chaîne, vous pouvez également les obtenir au format numérique. En utilisant la requête suivante, la date et l’heure actuelles sont renvoyées au format numérique (YYYYMMDDHHMMSS).
SELECT NOW() + 0;
Par exemple, le résultat peut être renvoyé sous la forme « 20241024163000 », ce qui est pratique lors de la manipulation de la valeur de manière numérique.
Spécification de la précision des fractions de seconde
La fonction NOW() vous permet de spécifier la précision des fractions de seconde. Vous pouvez définir la précision à l’aide d’un argument comme indiqué ci-dessous.
SELECT NOW(3);
Cette requête renvoie un résultat avec une précision milliseconde (trois chiffres après la virgule). Par exemple, elle peut renvoyer une valeur telle que « 2024-10-24 16:30:00.123 ». Cette fonctionnalité est extrêmement utile dans les systèmes qui nécessitent une précision au niveau de la seconde.
3. Différence entre SYSDATE() et NOW()
Il existe une fonction similaire à NOW() appelée SYSDATE(), mais elles se comportent légèrement différemment.
- NOW() : Récupère l’heure au début de l’exécution de la requête et conserve la même valeur tout au long de l’instruction. Même si une transaction dure longtemps, elle renvoie le même résultat.
- SYSDATE() : Récupère l’heure actuelle à chaque étape de la requête. En d’autres termes, même pendant les transactions de longue durée, elle renvoie l’heure réelle actuelle.
Par exemple, dans les processus batch de longue durée, SYSDATE() peut fournir des résultats en temps réel plus précis. Cependant, lorsque la cohérence des transactions est importante, NOW() est généralement recommandé.
Exemple illustrant la différence au sein d’une requête
La requête suivante montre la différence de comportement entre SYSDATE() et NOW().
SELECT NOW(), SYSDATE();
Le résultat peut ressembler à ceci.
NOW(): 2024-10-24 16:30:00
SYSDATE(): 2024-10-24 16:30:01
La différence de temps au moment de l’exécution de la requête est reflétée dans SYSDATE(), tandis que NOW() conserve l’heure du début de l’exécution de la requête. Bien que la différence soit subtile, il est important de choisir la fonction appropriée en fonction du cas d’utilisation.

4. Applications pratiques de la fonction NOW()
La fonction NOW() est très utile dans des scénarios spécifiques. Par exemple, si vous souhaitez enregistrer automatiquement la date et l’heure lors de l’insertion de données, vous pouvez utiliser la fonction NOW() comme indiqué ci-dessous.
INSERT INTO users (username, created_at)
VALUES ('example_user', NOW());
Cela enregistre automatiquement l’heure actuelle dans la colonne created_at lors de l’insertion de l’enregistrement. Cette fonctionnalité est particulièrement précieuse pour la journalisation et le suivi des événements.
De plus, si vous souhaitez récupérer les données créées au cours des sept derniers jours, vous pouvez utiliser la fonction NOW() comme suit.
SELECT * FROM orders
WHERE order_date >= NOW() - INTERVAL 7 DAY;
Cette requête récupère tous les enregistrements créés au cours des sept derniers jours à partir de la date et de l’heure actuelles. La fonction NOW() est extrêmement efficace pour l’extraction de données dépendantes du temps.
5. Considérations importantes lors de l’utilisation de la fonction NOW()
Il y a plusieurs points importants à considérer lors de l’utilisation de la fonction NOW(). En particulier, elle peut affecter la cohérence des transactions, il est donc important de l’utiliser de manière appropriée selon le contexte.
- Comportement au sein des transactions : La fonction NOW() renvoie un résultat cohérent au sein d’une transaction, c’est‑à‑dire qu’elle renvoie le même horodatage même pendant les processus de longue durée. Cela est important pour maintenir la cohérence des données. Cependant, si des horodatages en temps réel sont requis, l’utilisation de SYSDATE() est plus appropriée.
De plus, comme la fonction NOW() dépend du réglage du fuseau horaire, elle peut renvoyer des résultats différents selon la configuration du système. Dans les applications mondiales, il est essentiel de concevoir en tenant compte des fuseaux horaires.


