En SQL, des fonctions sont fournies pour récupérer la date et l’heure actuelles lors des opérations sur la base de données. En particulier, MySQL utilise couramment deux fonctions : CURDATE() et NOW(). En utilisant ces fonctions, vous pouvez facilement obtenir la date et l’heure actuelles, ce qui est utile pour enregistrer et gérer les données. Cet article expliquera comment utiliser ces fonctions et les différences entre elles en détail.
Comment utiliser la fonction CURDATE()
La fonction CURDATE() est une fonction intégrée de MySQL pour obtenir la date actuelle. Cette fonction ne renvoie que les informations de l’année, du mois et du jour, en excluant l’heure. Voici une utilisation de base de la fonction CURDATE().
Exemple d’utilisation de base
Pour obtenir la date actuelle, exécutez la requête SQL suivante :
SELECT CURDATE();
Lorsque vous exécutez cette requête, la date d’aujourd’hui est renvoyée au format AAAA-MM-JJ
. Par exemple, si vous exécutez cette requête le 24 mai 2024, le résultat sera le suivant :
+------------+
| CURDATE() |
+------------+
| 2024-05-24 |
+------------+
Exemple avancé : Insertion de la date actuelle dans une table
Vous pouvez également utiliser la fonction CURDATE() pour insérer la date actuelle dans une table. Dans l’exemple ci-dessous, une nouvelle commande est insérée dans la table orders
avec la date de commande définie à la date actuelle.
INSERT INTO orders (order_date, customer_id, product_id, quantity)
VALUES (CURDATE(), 12345, 67890, 1);
Lorsque cette requête est exécutée, une nouvelle ligne est ajoutée à la table orders
et le champ order_date
est rempli avec la date actuelle.
Comment utiliser la fonction NOW()
La fonction NOW() est une fonction intégrée de MySQL pour obtenir la date et l’heure actuelles. Cette fonction renvoie un timestamp qui inclut les informations de l’année, du mois, du jour, de l’heure, de la minute et de la seconde. Voici une utilisation de base de la fonction NOW().
Exemple d’utilisation de base
Pour obtenir la date et l’heure actuelles, exécutez la requête SQL suivante :
SELECT NOW();
Lorsque vous exécutez cette requête, le timestamp actuel est renvoyé au format AAAA-MM-JJ HH:MM:SS
. Par exemple, si vous exécutez cette requête à 14h30m45s le 24 mai 2024, le résultat sera le suivant :
+---------------------+
| NOW() |
+---------------------+
| 2024-05-24 14:30:45 |
+---------------------+
Exemple avancé : Insertion du timestamp actuel dans une table
Vous pouvez également utiliser la fonction NOW() pour insérer le timestamp actuel dans une table. Dans l’exemple ci-dessous, une nouvelle tentative de connexion est insérée dans la table login_attempts
avec l’heure de la tentative définie à la date et l’heure actuelles.
INSERT INTO login_attempts (user_id, attempt_time, status)
VALUES (12345, NOW(), 'SUCCESS');
Lorsque cette requête est exécutée, une nouvelle ligne est ajoutée à la table login_attempts
et le champ attempt_time
est rempli avec le timestamp actuel.
Différences entre CURDATE() et NOW()
Les fonctions CURDATE() et NOW() sont toutes deux utilisées pour récupérer les informations de date et d’heure actuelles, mais il existe des différences claires dans les informations qu’elles renvoient. Comprendre ces différences vous aidera à choisir la fonction appropriée à utiliser.
Caractéristiques de CURDATE()
CURDATE() est une fonction qui ne récupère que la date actuelle. Cette fonction n’inclut pas les informations de temps et renvoie la date au format AAAA-MM-JJ
. Elle est adaptée à des tâches telles que la génération de rapports basés sur la date système ou le filtrage de données basées sur des dates.
Exemple d’utilisation
SELECT CURDATE();
Résultat :
+------------+
| CURDATE() |
+------------+
| 2024-05-24 |
+------------+
Caractéristiques de NOW()
NOW() est une fonction qui récupère la date et l’heure actuelles. Cette fonction renvoie un timestamp qui inclut à la fois la date et l’heure au format AAAA-MM-JJ HH:MM:SS
. Elle est adaptée à des tâches telles que la création de journaux ou la gestion de données nécessitant des informations temporelles.
Exemple d’utilisation
SELECT NOW();
Résultat :
+---------------------+
| NOW() |
+---------------------+
| 2024-05-24 14:30:45 |
+---------------------+
Choisir la bonne fonction pour différents scénarios
- Exemple d’utilisation de CURDATE() : Lors du traitement des seules dates. Par exemple, les requêtes qui extraient les événements qui se sont produits à une date spécifique ou qui agrègent des données en fonction des dates.
- Exemple d’utilisation de NOW() : Lors du traitement des dates et heures. Par exemple, l’enregistrement des journaux, l’insertion de données nécessitant un timestamp ou la gestion des mises à jour basées sur le temps.
En utilisant correctement CURDATE() et NOW(), vous pouvez récupérer avec précision les informations requises.
Exemples de requêtes SQL
Voici quelques exemples pratiques de requêtes SQL utilisant les fonctions CURDATE() et NOW(). Ces exemples montrent comment chaque fonction renvoie des résultats et démontrent leur utilisation réelle.
Requête pour obtenir la date actuelle
La requête suivante utilise la fonction CURDATE() pour obtenir la date actuelle :
SELECT CURDATE();
Lorsque vous exécutez cette requête, la date d’aujourd’hui est renvoyée au format AAAA-MM-JJ
. Par exemple, le résultat sera le suivant :
+------------+
| CURDATE() |
+------------+
| 2024-05-24 |
+------------+
Requête pour obtenir la date et l’heure actuelles
La requête suivante utilise la fonction NOW() pour obtenir la date et l’heure actuelles :
SELECT NOW();
Lorsque vous exécutez cette requête, le timestamp actuel est renvoyé au format AAAA-MM-JJ HH:MM:SS
. Par exemple, le résultat sera le suivant :
+---------------------+
| NOW() |
+---------------------+
| 2024-05-24 14:30:45 |
+---------------------+
Requête pour insérer la date actuelle dans une table
La requête suivante utilise la fonction CURDATE() pour insérer la date actuelle dans une table :
INSERT INTO daily_reports (report_date, report_content)
VALUES (CURDATE(), 'Daily sales report content');
Lorsque cette requête est exécutée, une nouvelle ligne est ajoutée à la table daily_reports
et le champ report_date
est rempli avec la date actuelle.
Requête pour insérer le timestamp actuel dans une table
La requête suivante utilise la fonction NOW() pour insérer le timestamp actuel dans une table :
INSERT INTO event_logs (event_time, event_description)
VALUES (NOW(), 'User login event');
Lorsque cette requête est exécutée, une nouvelle ligne est ajoutée à la table event_logs
et le champ event_time
est rempli avec le timestamp actuel.
À travers ces exemples, vous pouvez comprendre comment utiliser les fonctions CURDATE() et NOW() et quels résultats elles renvoient. Cela permet une exécution efficace de diverses opérations de base de données nécessitant des dates et des heures.
Exemples avancés
Voici quelques requêtes pratiques utilisant les fonctions CURDATE() et NOW() pour utiliser la date et l’heure actuelles. Ces requêtes sont utiles pour des manipulations et des analyses de données avancées basées sur les dates et les heures.
Requête pour obtenir des données des 7 derniers jours
Pour obtenir les données des 7 derniers jours, utilisez la fonction CURDATE() pour calculer la date en fonction de la date actuelle.
SELECT * FROM orders
WHERE order_date >= CURDATE() - INTERVAL 7 DAY;
Cette requête extrait toutes les commandes de la table orders
qui se sont produites au cours des 7 derniers jours.
Requête pour obtenir les enregistrements d’une date spécifique
Pour obtenir les enregistrements d’une date spécifique, utilisez la fonction CURDATE() pour spécifier la condition.
SELECT * FROM events
WHERE event_date = CURDATE();
Cette requête extrait tous les événements de la table events
qui se sont produits aujourd’hui.
Requête pour obtenir les tentatives de connexion de la dernière heure
Pour obtenir les tentatives de connexion qui se sont produites au cours de la dernière heure, utilisez la fonction NOW() pour calculer l’heure en fonction de l’heure actuelle.
SELECT * FROM login_attempts
WHERE attempt_time >= NOW() - INTERVAL 1 HOUR;
Cette requête extrait toutes les tentatives de connexion de la table login_attempts
qui se sont produites au cours de la dernière heure.
Requête pour utiliser le timestamp actuel pour les mises à jour automatiques des données
Pour utiliser le timestamp actuel pour mettre à jour les enregistrements, utilisez la fonction NOW().
UPDATE users
SET last_login = NOW()
WHERE user_id = 12345;
Cette requête met à jour le champ last_login
d’un utilisateur spécifique dans la table users
avec le timestamp actuel.
Requête pour agréger les ventes du début du mois à aujourd’hui
Pour agréger les ventes du début du mois à aujourd’hui, utilisez la fonction CURDATE() pour calculer la date du premier jour du mois.
SELECT SUM(sales_amount) FROM sales
WHERE sale_date >= DATE_FORMAT(CURDATE() ,'%Y-%m-01') AND sale_date <= CURDATE();
Cette requête agrège le total des ventes de la table sales
du premier jour du mois à aujourd’hui.
En comprenant ces exemples de requêtes avancées utilisant les fonctions CURDATE() et NOW(), vous pouvez effectuer efficacement diverses manipulations et analyses de données basées sur les dates et les heures.
Conclusion
Les fonctions CURDATE() et NOW() sont des outils puissants dans MySQL pour obtenir la date et l’heure actuelles. CURDATE() ne renvoie que la date, ce qui la rend adaptée aux opérations basées sur les dates. D’un autre côté, NOW() renvoie un timestamp et est utile lorsque des informations temporelles sont nécessaires. En utilisant correctement ces fonctions, vous pouvez enregistrer, gérer et analyser les données de manière efficace. Référez-vous aux exemples d’utilisation de base et avancée fournis dans cet article pour créer des requêtes SQL avancées utilisant les dates et les heures.