Database
 sql >> Base de Dados >  >> RDS >> Database

Como comparar data no SQL


Nesta seção, aprenderemos como as datas podem ser comparadas no SQL.
  • Podemos comparar qualquer data aleatória com outra data armazenada em uma coluna de uma tabela.
  • Esta comparação pode ser feita com a ajuda de operadores de comparação tal >, <,>=,>=, =.
  • A data () A função também é usada no SQL para comparar duas datas diferentes.
  • O tipo de dados DATE permite armazenar as datas em tabelas SQL no formato ‘AAAA-MM-DD’. Mas ao escrever a consulta para comparar as datas, a data a ser escrita na consulta pode estar em um formato de string relaxado.
  • De acordo com o formato de string relaxado, diferentes partes da data podem ser separadas usando qualquer caractere intermediário. O MySQL também permite que uma data seja escrita em uma consulta sem qualquer separador, desde que a string escrita como uma data forme uma data sensata.

Exemplo 1:

Escreva uma consulta para encontrar todos os funcionários cuja data de ingresso é maior ou igual a 5 de maio de 1999.

Crie um banco de dados com o nome “dbemployee ” com uma tabela ‘funcionário’ criada nele. Consideraremos esta tabela e banco de dados para todos os exemplos a seguir.
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)

Criamos um novo banco de dados com o nome ‘dbemployee’, e com o comando ‘USE dbemployee’, selecionamos este banco de dados. Então, com o comando ‘CREATE TABLE’, criamos uma tabela ‘employee’ no banco de dados ‘dbemployee’.

Agora, vamos inserir dados na tabela criada acima.
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)

Após inserir os dados com sucesso na tabela, agora buscaremos todos os registros de uma tabela.
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)

Agora, vamos escrever uma consulta para a declaração de problema fornecida.
mysql> SELECT *FROM employee WHERE Emp_Joining_Date >= '1999-05-05';

Saída:
+--------+------------------+------------+------------+------------------+
| 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)

Existem três funcionários com IDs de funcionário 1, 2 e 3 cuja data de ingresso é superior a 5 de maio de 1999.

Exemplo 2:

Escreva uma consulta para encontrar todos os funcionários cuja data de ingresso é menor ou igual a 5 de maio de 1999.
mysql> SELECT *FROM employee WHERE Emp_Joining_Date <= '19990505';

Saída:
+--------+-------------------+------------+------------+------------------+
| 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)

Dois funcionários com IDs de funcionário 4 e 5 cuja data de ingresso é inferior a 5 de maio de 1999.

Exemplo 3:

Faça uma consulta para encontrar todos os funcionários cuja data de ingresso é igual a 8 de agosto de 1987.
mysql> SELECT *FROM employee WHERE Emp_Joining_Date = 19870818;

Saída:
+--------+-------------+----------+------------+------------------+
| 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)

Há apenas um funcionário com ID de funcionário 4 cuja data de ingresso é igual a 18 de agosto de 1987.

Usando data()


Exemplo 4:

Escreva uma consulta usando a função date () para encontrar todos os funcionários cuja data de ingresso é igual a 26 de junho de 2021.
mysql> SELECT *FROM employee WHERE date (Emp_Joining_Date) = '2021-06-26';

Saída:
+--------+------------------+----------+------------+------------------+
| 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)

Há apenas um funcionário com ID de funcionário 2 cuja data de ingresso é igual a 26 de junho de 2021.