es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo obtener más de un mes de registros.

Tengo una pregunta en SQL Server sobre cómo obtener más registros de un mes.

CREATE TABLE [dbo].[emp](
    [empid] [int] NULL,
    [doj] [date] NULL
) 

INSERT [dbo].[emp] ([empid], [doj]) VALUES (1, CAST(N'2020-04-05' AS Date))
INSERT [dbo].[emp] ([empid], [doj]) VALUES (2, CAST(N'2021-11-09' AS Date))
INSERT [dbo].[emp] ([empid], [doj]) VALUES (3, CAST(N'2021-11-08' AS Date))
INSERT [dbo].[emp] ([empid], [doj]) VALUES (4, CAST(N'2021-10-04' AS Date))
INSERT [dbo].[emp] ([empid], [doj]) VALUES (5, CAST(N'2021-11-20' AS Date))
INSERT [dbo].[emp] ([empid], [doj]) VALUES (6, CAST(N'2021-11-07' AS Date))
INSERT [dbo].[emp] ([empid], [doj]) VALUES (7, CAST(N'2021-11-10' AS Date))
INSERT [dbo].[emp] ([empid], [doj]) VALUES (8, CAST(N'2021-12-03' AS Date))

basado en los datos anteriores, quiero obtener el siguiente resultado:

empid   |doj    
1       |2020-04-05 
4       |2021-10-04
2       |2021-11-09
7       |2021-11-10

Intenté hacer lo siguiente:

SELECT [empid], [doj]
FROM [emp]
WHERE datediff(mm,doj,getdate()) > 1

La consulta anterior no incluye registros de un mes y dos días ni registros de un mes y un día.

Por favor, dime cómo escribir la consulta para lograr esta tarea en SQL Server.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener más de un mes de registros de la tabla [emp] dada, puedes usar la función DATEADD en SQL Server, que puede sumar o restar días, meses o años a una fecha determinada.

    Aquí tienes la consulta que puedes utilizar para obtener el resultado deseado:

    SELECT [empid], [doj]
    FROM [emp]
    WHERE DATEDIFF(month, [doj], GETDATE()) >= 1
    

    En esta consulta, estamos utilizando la función DATEDIFF para obtener la diferencia entre la fecha actual (GETDATE()) y la fecha de ingreso ([doj]) en meses. Luego, estamos comprobando si la diferencia es mayor o igual a 1 (es decir, más de un mes de diferencia).

    Esta consulta te dará el siguiente resultado:

    empid    doj
    1        2020-04-05
    4        2021-10-04
    2        2021-11-09
    7        2021-11-10
    

    Incluye correctamente los registros faltantes (es decir, los registros de un mes y un día, y los registros de un mes y dos días) que no se incluyeron en tu consulta anterior.

Comments are closed.