Database
 sql >> Base de données >  >> RDS >> Database

Comment comparer la date en SQL

Dans cette section, nous apprendrons comment comparer des dates en SQL.

  • Nous pouvons comparer n'importe quelle date aléatoire avec une autre date stockée dans une colonne d'une table.
  • Cette comparaison peut être effectuée à l'aide d'opérateurs de comparaison tels >, <,>=,>=, =.
  • La date () est également utilisée en SQL pour comparer deux dates différentes.
  • Le type de données DATE permet de stocker les dates dans des tables SQL au format "AAAA-MM-JJ". Mais lors de l'écriture de la requête pour comparer les dates, la date à écrire dans la requête peut être dans un format de chaîne souple.
  • Selon le format de chaîne assoupli, différentes parties de la date peuvent être séparées à l'aide de n'importe quel caractère intermédiaire. MySQL permet également d'écrire une date dans une requête sans aucun séparateur, à condition que la chaîne écrite sous forme de date forme une date sensible.

Exemple 1 :

Écrivez une requête pour trouver tous les employés dont la date d'entrée est supérieure ou égale au 5 mai 1999.

Créez une base de données avec le nom "dbemployee » avec une table « employé » créée dedans. Nous considérerons ce tableau et cette base de données pour tous les exemples suivants.

mysql> CREATE DATABASE dbemployee;
Query OK, 1 row affected (0.00 sec)
mysql> USE dbemployee;
Database changed
mysql> CREATE TABLE employee (Emp_Id INT NOT NULL, Emp_Name VARCHAR (20), Emp_Dept VARCHAR (20), Emp_Salary INT, Emp_Joining_Date DATE);
Query OK, 0 rows affected (0.09 sec)

Nous avons créé une nouvelle base de données avec le nom "dbemployee", et avec la commande "USE dbemployee", nous avons sélectionné cette base de données. Ensuite, avec la commande ‘CREATE TABLE’, nous avons créé une table ‘employee’ dans la base de données ‘dbemployee’.

Maintenant, nous allons insérer des données dans le tableau créé ci-dessus.

mysql> INSERT INTO employee VALUES (1, "Sana Khan", "HRM", 45000, "1999-06-17");
Query OK, 1 row affected (0.05 sec)
mysql> INSERT INTO employee VALUES (2, "Anupama Deshmukh", "Finance", 32000, CURDATE ());
Query OK, 1 row affected (0.11 sec)


mysql> INSERT INTO employee VALUES (3, "Kajal Shah", "Purchasing", 71000, "2020-12-12");
Query OK, 1 row affected (0.09 sec)


mysql> INSERT INTO employee VALUES (4, "Mayuri Koli", "Accounts", 64000, "1987-08-18");
Query OK, 1 row affected (0.09 sec)


mysql> INSERT INTO employee VALUES (5, "Surili Maheshwari", "Production", 30000, "1970-10-10");
Query OK, 1 row affected (0.09 sec)

Après avoir inséré des données avec succès dans la table, nous allons maintenant récupérer tous les enregistrements d'une table.

mysql> SELECT *FROM employee;
+--------+-------------------+------------+------------+------------------+
| Emp_Id | Emp_Name          | Emp_Dept   | Emp_Salary | Emp_Joining_Date |
+--------+-------------------+------------+------------+------------------+
|      1 | Sana Khan         | HRM        |      45000 | 1999-06-17       |
|      2 | Anupama Deshmukh  | Finance    |      32000 | 2021-06-26       |
|      3 | Kajal Shah        | Purchasing |      71000 | 2020-12-12       |
|      4 | Mayuri Koli       | Accounts   |      64000 | 1987-08-18       |
|      5 | Surili Maheshwari | Production |      30000 | 1970-10-10       |
+--------+-------------------+------------+------------+------------------+
5 rows in set (0.00 sec)

Maintenant, écrivons une requête pour l'énoncé de problème donné.

mysql> SELECT *FROM employee WHERE Emp_Joining_Date >= '1999-05-05';

Sortie :

+--------+------------------+------------+------------+------------------+
| Emp_Id | Emp_Name         | Emp_Dept   | Emp_Salary | Emp_Joining_Date |
+--------+------------------+------------+------------+------------------+
|      1 | Sana Khan        | HRM        |      45000 | 1999-06-17       |
|      2 | Anupama Deshmukh | Finance    |      32000 | 2021-06-26       |
|      3 | Kajal Shah       | Purchasing |      71000 | 2020-12-12       |
+--------+------------------+------------+------------+------------------+
3 rows in set (0.00 sec)

Il y a trois employés avec les identifiants d'employé 1, 2 et 3 dont la date d'entrée est supérieure au 5 mai 1999.

Exemple 2 :

Écrivez une requête pour trouver tous les employés dont la date d'entrée est antérieure ou égale au 5 mai 1999.

mysql> SELECT *FROM employee WHERE Emp_Joining_Date <= '19990505';

Sortie :

+--------+-------------------+------------+------------+------------------+
| Emp_Id | Emp_Name          | Emp_Dept   | Emp_Salary | Emp_Joining_Date |
+--------+-------------------+------------+------------+------------------+
|      4 | Mayuri Koli       | Accounts   |      64000 | 1987-08-18       |
|      5 | Surili Maheshwari | Production |      30000 | 1970-10-10       |
+--------+-------------------+------------+------------+------------------+
2 rows in set (0.00 sec)

Deux employés avec les identifiants d'employé 4 et 5 dont la date d'entrée est inférieure au 5 mai 1999.

Exemple 3 :

Écrivez une requête pour trouver tous les employés dont la date d'entrée est la même que le 8 août 1987.

mysql> SELECT *FROM employee WHERE Emp_Joining_Date = 19870818;

Sortie :

+--------+-------------+----------+------------+------------------+
| Emp_Id | Emp_Name    | Emp_Dept | Emp_Salary | Emp_Joining_Date |
+--------+-------------+----------+------------+------------------+
|      4 | Mayuri Koli | Accounts |      64000 | 1987-08-18       |
+--------+-------------+----------+------------+------------------+
1 row in set (0.00 sec)

Il n'y a qu'un seul employé avec l'ID d'employé 4 dont la date d'entrée est égale au 18 août 1987.

Utiliser date()

Exemple 4 :

Écrivez une requête en utilisant la fonction date () pour trouver tous les employés dont la date d'arrivée est la même que le 26 juin 2021.

mysql> SELECT *FROM employee WHERE date (Emp_Joining_Date) = '2021-06-26';

Sortie :

+--------+------------------+----------+------------+------------------+
| Emp_Id | Emp_Name         | Emp_Dept | Emp_Salary | Emp_Joining_Date |
+--------+------------------+----------+------------+------------------+
|      2 | Anupama Deshmukh | Finance  |      32000 | 2021-06-26       |
+--------+------------------+----------+------------+------------------+
1 row in set (0.00 sec)

Il n'y a qu'un seul employé avec l'ID d'employé 2 dont la date d'entrée est égale au 26 juin 2021.