Comment utiliser CURDATE() et NOW() pour obtenir la date et l’heure actuelles en SQL

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.

Sommaire

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.

Sommaire