Aquí veremos cómo calcular el número de días entre las dos fechas dadas con la ayuda de la consulta SQL usando la función DATEDIFF().
Para fines de demostración, crearemos una tabla demo_orders en una base de datos llamada «geeks».
Creación de la base de datos:
Use la siguiente instrucción SQL para crear una base de datos llamada geeks:
CREATE DATABASE geeks;
Uso de la base de datos:
Use la siguiente instrucción SQL para cambiar el contexto de la base de datos a geeks:
USE geeks;
Definición de tabla :
Tenemos la siguiente demo_table en nuestra base de datos de geeks .
CREATE TABLE demo_orders( ORDER_ID INT IDENTITY(1,1) PRIMARY KEY, ITEM_NAME VARCHAR(30) NOT NULL, ORDER_DATE DATE );
Puede usar la siguiente declaración para consultar la descripción de la tabla creada:
EXEC SP_COLUMNS demo_orders;
Agregando datos a la tabla:
Use la siguiente declaración para agregar datos a la tabla demo_orders :
INSERT INTO demo_orders --no need to mention columns explicitly as we are inserting into --all columns and ID gets --automatically incremented. VALUES ('Maserati', '2007-10-03'), ('BMW', '2010-07-23'), ('Mercedes Benz', '2012-11-12'), ('Ferrari', '2016-05-09'), ('Lamborghini', '2020-10-20');
Para verificar el contenido de la tabla, use la siguiente declaración:
SELECT * FROM demo_orders;
Ahora busquemos el número de meses entre las fechas del pedido de ‘Maserati’ y ‘Ferrari’ en la tabla usando la función DATEDIFF().
A continuación se muestra la sintaxis de la función DATEDIFF() para encontrar el no. de días entre dos fechas dadas.
Syntax: DATEDIFF(day or dy or y, <start_date>, <end_date>);
Ejemplo:
DECLARE @start VARCHAR(10) = ( SELECT order_date FROM demo_orders WHERE item_name = 'Maserati'), @end VARCHAR(10) = ( SELECT order_date FROM demo_orders WHERE item_name = 'Ferrari') --@start variable holds the start date(i.e date of Maserati being purchased). --@end variable holds the end date (i.e date of Ferrari being purchased). SELECT DATEDIFF(day, @start, @end) AS number_of_days;
Producción: