【发布时间】:2022-01-14 03:12:39
【问题描述】:
我在 SQL Server 中有一个关于如何获取多月记录的问题?
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))
基于以上数据,我想要如下输出
empid |doj
1 |2020-04-05
4 |2021-10-04
2 |2021-11-09
7 |2021-11-10
我尝试如下
SELECT [empid], [doj]
FROM [emp]
WHERE datediff(mm,doj,getdate()) > 1
上面的查询缺少1个月1天和1个月2天的记录。
请告诉我如何在 SQL Server 中编写查询来完成此任务。
【问题讨论】:
-
我不明白。你说一个多月,举个例子,给出上个月或更晚的数据,但是想要去年四月的数据以及今年十月和十一月的数据?
-
您已标记 SQL Server 2021 和 2016 - 它是什么?请只标记感兴趣的版本。
-
The
DATEDIFFfunction 不计算两个日期之间的月数;它计算两个日期之间跨越的月份边界的数量。DATEDIFF(month, '20211130', '20211201')和DATEDIFF(month, '20211101', '20211231')都将返回1。 -
输入
datediff(mm,节省了多少精力,datediff(month,的可读性提高了多少?
标签: sql sql-server tsql sql-server-2012 sql-server-2016