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.
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:
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:
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.