DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Uncategorized»Comparaison de dates MySQL – DZone
    Uncategorized

    Comparaison de dates MySQL – DZone

    mars 16, 2023
    Comparaison de dates MySQL - DZone
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    Cet article nous donnera une présentation des différentes méthodes pour comparer les valeurs datetime dans MySQL. Dans MySQL, nous pouvons stocker des dates dans DATE et TIMESTAMP Types de données. Les deux types de données stockent les données au format « AAAA-MM-JJ » « HH:MM:SS ». Il existe quelques différences entre les deux types de données, telles que :

    • Le DATETIME prend en charge « 1000-01-01 00:00:00 » à « 9999-12-31 23:59:59 », mais le TIMESTAMP prend en charge « 1970-01-01 00:00:01 » à « 2038-01-19 03:14:07 » UTC.
    • Le DATETIME est constant, mais le TIMESTAMP les valeurs changent en fonction du fuseau horaire utilisé par l’application car TIMESTAMP les données convertiront l’heure actuelle en UTC et vice-versa.

    Différences entre les deux types de données

    Voici un exemple simple qui explique la différence entre les deux types de données :

    Requête 1 : type de données DATETIME

    Requête 1

    Requête 2 : type de données TIMESTAMP

    Requête 22

    Maintenant, changez le fuseau horaire de IST (Indian Standard Time) à CST (Central Standard Time). Une fois les fuseaux horaires modifiés, le résultat de la requête change comme suit :

    Requête 1 : type de données DATETIME

    Requête 1.1

    Requête 2 : type de données TIMESTAMP

    Requête 2.1

    La capture d’écran ci-dessus montre que l’horodatage est converti en fuseau horaire CST (UTC -6:00).

    Cet article contient diverses requêtes, j’ai donc préparé une configuration de démonstration sur mon ordinateur pour le comprendre plus clairement. Les détails sont suivants :

    Configuration de la démo

    Pour la démonstration, j’ai créé une table nommée tblCustomer dans la base de données sakila. Le code SQL pour créer la table est ci-dessous :

    USE sakila;
    
    CREATE TABLE tblCustomer (
    
      customer_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    
      first_name VARCHAR(45) NOT NULL,
    
      last_name VARCHAR(45) NOT NULL,
    
      email VARCHAR(50) DEFAULT NULL,
    
      rental_id smallint UNSIGNED NOT NULL,
    
      rental_date datetime,
    
      return_date datetime,
    
      PRIMARY KEY (customer_id)
    
    );

    J’ai inséré des enregistrements factices dans un tblCustomer tableau. Le code SQL pour insérer des données est le suivant :

    INSERT INTO sakila.tblcustomer(customer_id, first_name, last_name, email, rental_id, rental_date, return_date) VALUES
    
    (1, 'PATRICIA', 'JOHNSON', 'PATRICIA.JOHNSON@sakilacustomer.org', 320, '2005-05-27 00:09:24', '2005-05-28 04:30:24'),
    
    (2, 'TYLER', 'WREN', 'TYLER.WREN@sakilacustomer.org', 322, '2005-05-27 00:47:35', '2005-06-02 00:32:35'),
    
    (3, 'CLARA', 'SHAW', 'CLARA.SHAW@sakilacustomer.org', 323, '2005-05-27 00:49:27', '2005-05-30 03:12:27'),
    
    (4, 'DAVE', 'GARDINER', 'DAVE.GARDINER@sakilacustomer.org', 487, '2005-05-28 00:00:30', '2005-05-28 19:18:30'),
    
    (5, 'REGINA', 'BERRY', 'REGINA.BERRY@sakilacustomer.org', 488, '2005-05-28 00:07:50', '2005-06-03 22:30:50'),
    
    (6, 'DERRICK', 'BOURQUE', 'DERRICK.BOURQUE@sakilacustomer.org', 489, '2005-05-28 00:09:12', '2005-05-31 04:44:12'),
    
    (7, 'SUE', 'PETERS', 'SUE.PETERS@sakilacustomer.org', 683, '2005-05-29 00:09:48', '2005-06-02 04:27:48'),
    
    (8, 'DEREK', 'BLAKELY', 'DEREK.BLAKELY@sakilacustomer.org', 684, '2005-05-29 00:13:15', '2005-06-04 21:26:15'),
    
    (9, 'BERNICE', 'WILLIS', 'BERNICE.WILLIS@sakilacustomer.org', 685, '2005-05-29 00:17:51', '2005-06-05 05:32:51'),
    
    (10, 'NORMAN', 'CURRIER', 'NORMAN.CURRIER@sakilacustomer.org', 686, '2005-05-29 00:27:10', '2005-05-30 02:29:10'),
    
    (11, 'JO', 'FOWLER', 'JO.FOWLER@sakilacustomer.org', 687, '2005-05-29 00:32:09', '2005-05-31 23:53:09'),
    
    (14, 'BERNICE', 'WILLIS', 'BERNICE.WILLIS@sakilacustomer.org', 837, '2005-05-30 00:02:08', '2005-06-02 05:31:08'),
    
    (15, 'NATHANIEL', 'ADAM', 'NATHANIEL.ADAM@sakilacustomer.org', 838, '2005-05-30 00:27:57', '2005-06-06 22:19:57'),
    
    (17, 'DANIELLE', 'DANIELS', 'DANIELLE.DANIELS@sakilacustomer.org', 995, '2005-05-31 00:06:02', '2005-06-06 02:30:02'),
    
    (18, 'ERIC', 'ROBERT', 'ERIC.ROBERT@sakilacustomer.org', 996, '2005-05-31 00:06:20', '2005-05-31 21:29:20'),
    
    (19, 'NATALIE', 'MEYER', 'NATALIE.MEYER@sakilacustomer.org', 997, '2005-05-31 00:08:25', '2005-06-02 00:17:25'),
    
    (20, 'ALAN', 'KAHN', 'ALAN.KAHN@sakilacustomer.org', 998, '2005-05-31 00:16:57', '2005-06-01 22:41:57'),
    
    (21, 'MARVIN', 'YEE', 'MARVIN.YEE@sakilacustomer.org', 999, '2005-05-31 00:25:10', '2005-06-03 06:05:10');

    Présentation de la fonction DATE()

    Le DATE() La fonction affiche la seule partie de date de l’expression datetime. Si l’expression est NULLalors il revient aussi NULL. Voici la syntaxe du DATE() fonction:

    • Sélectionner DATE (expression date-heure).

    Prenons un exemple simple. Nous voulons afficher la partie date du rental_date du tblCustomer tableau. Pour y parvenir, nous pouvons écrire la requête comme suit :

    Sortir

    Sortir

    Comme vous pouvez le voir, la requête a extrait la partie date du rental_date colonne.

    Le DATE() La fonction compare une expression de chaîne avec une valeur datetime. Par exemple, nous voulons extraire la liste des clients dont la date de location est « 28-05-2005 ». Pour cela, la requête s’écrit comme suit :

    use sakila;
    
    select customer_id "CustomerID",first_name "First Name",last_name "Last Name",email "Email ID", rental_date "Rental Date" from tblcustomer where rental_date="2005-05-28";

    Sortir

    Sortie 2

    Comme vous pouvez le voir, la requête n’a renvoyé aucun enregistrement, car lorsque nous n’incluons pas le DATE() fonction, la requête inclut la partie heure de la colonne datetime. Ainsi, si vous réécrivez la requête et incluez la partie heure, les enregistrements souhaités seront extraits :

    use sakila;
    
    select customer_id "CustomerID",first_name "First Name",last_name "Last Name",email "Email ID", rental_date "Rental Date" from tblcustomer where rental_date="2005-05-28 00:00:30";

    Sortir

    Sortie 3

    Maintenant, incluons le DATE fonction dans une requête :

    use sakila;
    
    select customer_id "CustomerID",first_name "First Name",last_name "Last Name",email "Email ID", rental_date "Rental Date" from tblcustomer where date(rental_date)='2005-05-28';

    Sortir

    Sortie 4

    Comme vous le voyez, la requête a renvoyé une liste de clients dont la date de location est « 2005-05-28 ». Dans ce cas, l’indice n’est pas utilisé.

    Le DATE() La fonction peut être utilisée avec diverses clauses, opérateurs et fonctions. Comprenons-les avec des exemples simples :

    Comparer deux dates à l’aide de la clause WHERE

    Supposons que nous voulions remplir la liste des employés dont la date de location est supérieure à « 2005-05-27 » et dont la date de retour est inférieure à « 2005-06-01 ». La requête s’écrit comme suit :

    use sakila;
    
    select customer_id "CustomerID",first_name "First Name",last_name "Last Name",email "Email ID", , rental_date , return_date from tblcustomer where date(rental_date)>'2005-05-27' and date(return_date)<'2005-06-01'

    Sortir

    Sortie 5

    Comme vous pouvez le voir dans la capture d’écran ci-dessus, nous avons ajouté le DATE() fonction dans le WHERE clause.

    Voyons maintenant comment nous pouvons utiliser des opérateurs logiques et arithmétiques pour comparer deux dates.

    Comparer deux dates à l’aide d’opérateurs logiques et arithmétiques

    Par exemple, nous voulons afficher la liste des clients dont la date de location est supérieure à « 2005-05-30 ». Pour ce faire, nous utiliserons le > (Opérateur arithmétique) Opérateur. La requête est ci-dessous :

    use sakila;
    
    select customer_id "CustomerID",first_name "First Name",last_name "Last Name",email "Email ID", rental_date , return_date from tblcustomer where date(rental_date)>'2005-05-30'

    Sortir

    Sortie 6

    Prenons un autre exemple; nous voulons remplir la liste des clients dont la date de retour se situe entre « 2005-05-31 » et « 2005-06-03 ». Pour ce faire, nous utilisons BETWEEN (Opérateur Logique). La requête est ci-dessous :

    use sakila;
    
    select customer_id "CustomerID",first_name "First Name",last_name "Last Name",email "Email ID", rental_date , return_date from tblcustomer where date(return_date) between '2005-05-31' and '2005-06-03'

    Sortir

    Sortie 7

    Voyons maintenant comment nous pouvons utiliser la fonction pour comparer des dates. L’indice est utilisé dans ce cas.

    Comparer deux dates à l’aide de la fonction DATEDIFF()

    Supposons que nous voulions compter les jours entre le rental_date et return_date. Pour ce faire, nous utilisons DATEDIFF() fonction. La requête est la suivante :

    use sakila;
    
    Select customer_id "CustomerID",first_name "First Name",last_name "Last Name",email "Email ID", rental_date,return_date, datediff(date(return_date),date(rental_date))"TotalDays" from tblcustomer Where date(rental_date)>='2005-05-30'

    Sortir

    Sortie 8

    Comparer des dates avec dbForge MySQL Studio

    Le dbForge MySQL Studio a une fonctionnalité intéressante qui permet de filtrer les données des tables en comparant les dates. Nous pouvons utiliser cette option de deux manières :

    1. Comparez les dates de tous les enregistrements d’une table.
    2. Comparez les dates sur le jeu de résultats.

    Comparer les dates sur tous les enregistrements de la table

    Le dbForge MySQL Studio permet de visualiser tous les enregistrements dans un onglet de visionneuse de données. Pour faire ça:

    • Lancez dbForge Studio pour MySQLConnectez-vous à la base de données sakila.
    • Agrandir
    • Développer les tableaux
    • Clic-droit tblCustomer
    • Sélectionner « Récupérer des données.”

    Voici la capture d’écran de l’explorateur de base de données :

    Explorateur de base de données

    Comme indiqué ci-dessous, les données de la tblCustomer le tableau sera affiché dans un onglet de visionneuse de données :

    Onglet Visualiseur de données

    Maintenant, nous voulons comparer la date de location de tous les clients et remplir la liste des clients dont la date de location dépasse le 2005-05-30. Pour ce faire, faites un clic droit sur le « location_date» et sélectionnez la colonne «filtre » option:

    Options de filtre

    Une option de filtre de boîte de dialogue s’ouvre. Ici, vous pouvez ajouter plusieurs conditions qui peuvent être utilisées pour filtrer les données d’une table.

    Nous voulons obtenir la liste des clients dont la date de location est supérieure au 30-05-2005. Pour ce faire, le filtre doit être défini comme indiqué ci-dessous :

    Éditeur de fichiers

    Ensuite, cliquez sur « Appliquer: »

    Appliquer

    Comme vous pouvez le voir sur l’image ci-dessus, les données de tblCustomer est filtré, et vous pouvez voir la liste des clients dont la date de location est supérieure au 2005-05-31.

    Ici, je voudrais montrer une autre fonctionnalité intéressante de dbForge Studio pour MySQL 2022. Elle nous permet de mettre à jour les enregistrements directement à partir de la sortie de la requête. Par exemple, je veux mettre à jour le rental_date du client nommé ALAN KHAN. La valeur actuelle est « 31-05-2005 00:16:57 » et je veux la changer en « 01-06-2005 00:16:57 ». Pour cela, cliquez sur le rental_date de ALAN KHAN. Un calendrier s’ouvrira comme indiqué dans l’image suivante :

    Calendrier

    Changement…

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.