sql >> Base de Datos >  >> RDS >> Database

Cómo comparar la fecha en SQL

En esta sección, aprenderemos cómo se pueden comparar fechas en SQL.

  • Podemos comparar cualquier fecha aleatoria con otra fecha almacenada en una columna de una tabla.
  • Esta comparación se puede hacer con la ayuda de operadores de comparación tales >, <,>=,>=, =.
  • La fecha () La función también se usa en SQL para comparar dos fechas diferentes.
  • El tipo de datos DATE permite almacenar las fechas en tablas SQL en formato 'YYYY-MM-DD'. Pero al escribir la consulta para comparar las fechas, la fecha que se escribirá en la consulta puede estar en un formato de cadena relajado.
  • De acuerdo con el formato relajado de la cadena, las diferentes partes de la fecha se pueden separar usando cualquier carácter intermedio. MySQL también permite escribir una fecha en una consulta sin ningún separador, siempre que la cadena escrita como fecha forme una fecha sensible.

Ejemplo 1:

Escriba una consulta para encontrar todos los empleados cuya fecha de ingreso sea mayor o igual al 5 de mayo de 1999.

Cree una base de datos con el nombre “dbemployee ” con una tabla 'empleado' creada en él. Consideraremos esta tabla y base de datos para todos los siguientes ejemplos.

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)

Hemos creado una nueva base de datos con el nombre 'dbemployee', y con el comando 'USE dbemployee', hemos seleccionado esta base de datos. Luego, con el comando 'CREAR TABLA', hemos creado una tabla 'empleado' en la base de datos 'dbemployee'.

Ahora, insertaremos datos en la tabla creada anteriormente.

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)

Después de insertar datos con éxito en la tabla, ahora buscaremos todos los registros de una tabla.

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)

Ahora, escribamos una consulta para el enunciado del problema dado.

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

Salida:

+--------+------------------+------------+------------+------------------+
| 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)

Hay tres empleados con cédulas de empleado 1, 2 y 3 cuya fecha de ingreso es mayor al 5 de mayo de 1999.

Ejemplo 2:

Escriba una consulta para encontrar todos los empleados cuya fecha de incorporación sea igual o anterior al 5 de mayo de 1999.

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

Salida:

+--------+-------------------+------------+------------+------------------+
| 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)

Dos empleados con identificación de empleado 4 y 5 cuya fecha de incorporación sea anterior al 5 de mayo de 1999.

Ejemplo 3:

Escriba una consulta para encontrar todos los empleados cuya fecha de ingreso sea la misma que el 8 de agosto de 1987.

mysql> SELECT *FROM employee WHERE Emp_Joining_Date = 19870818;

Salida:

+--------+-------------+----------+------------+------------------+
| 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)

Solo hay un empleado con id de empleado 4 cuya fecha de incorporación es igual al 18 de agosto de 1987.

Usando fecha()

Ejemplo 4:

Escriba una consulta utilizando la función de fecha () para encontrar todos los empleados cuya fecha de incorporación sea la misma que el 26 de junio de 2021.

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

Salida:

+--------+------------------+----------+------------+------------------+
| 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)

Solo hay un empleado con identificación de empleado 2 cuya fecha de incorporación es igual al 26 de junio de 2021.