Para encontrar todos los domingos entre dos días usando el lenguaje SQL, usaremos las «Funciones de fecha» definidas en SQL. Aparte de estos, también usaremos la idea CTE (Ver).
Idea básica:
Básicamente, se nos dan dos días y se nos exige que enumeremos todos los domingos entre estos dos días.
Pensando un poco, se nos ocurrió la idea de que podemos verificar todas las fechas entre las dos fechas límite dadas para los domingos. Además, las funciones SQL Date proporcionan uno de esos métodos para implementar esta idea:
DATENAME(interval_part, Date)
Esta función devuelve el nombre de la parte de la fecha especificada en los argumentos.
Por ejemplo:
DATENAME(month, '18/11/2001' )
Esta llamada a la función devolvería noviembre.
Por lo tanto, podemos hacer coincidir el nombre del día representado por cualquier fecha con el domingo. Si es domingo entonces lo seleccionamos, de lo contrario lo rechazamos.
Ahora la parte restante es crear una tabla que contenga una columna de todas las fechas entre las dos fechas dadas, para que podamos realizar nuestra verificación sobre ellas.
Esto se puede hacer usando la idea de que podemos incrementar la parte del día de la fecha en 1 sobre la fecha anterior para obtener la próxima fecha y verificar que la próxima fecha sea menor que el límite superior dado de las fechas.
DATEADD (parte, número, fecha): este método se utiliza para agregar el número especificado a la parte dada de la fecha.
Por ej. DATEADD(año,2,’18/11/2001′) Esto da como resultado la fecha: 18/11/2003.
Así que aquí está nuestra consulta SQL para este tema:
declare @StartDate DateTime = '2021-02-01', @EndDate DateTime = '2021-02-28'; /*Creating a temporary view in sql(CTE) which recursively calls itself to find next date by incrementing the previous date and stores the result in it till the end date is reached*/ WITH CTE(date_list) AS ( SELECT @StartDate UNION ALL SELECT DATEADD(day,1,date_list) FROM CTE WHERE date_list<=@EndDate ) SELECT date_list as 'List of sundays' FROM CTE WHERE DATENAME(weekday ,date_list) IN ('Sunday'); /*In the where clause at last we are checking each day from the list whether it is in Sunday list or not*/
Publicación traducida automáticamente
Artículo escrito por harshkumarchoudhary144 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA