我有一個約會表,其中包含兩個字段 - start_date和end_date,兩個日期時間。表格中沒有時間段的重疊。使用SQL查找可用空缺
給定一個特定的時間段(search_start和search_end),我需要使用SQL生成這些約會(從和到)之間的所有開口的列表。
例如:給定表中的兩項任命:
2016年9月15日08:00至2016年9月15日09:00
2016年9月15日10:00到2016年9月15日12 :00
而給定的搜索參數開始= 2016年9月1日00:00和結束= 2016年9月30日23時59分,結果應該是2016年9月1日00:00
至2016年9月15日08:00
2016年9月15日09:00至2016年9月15日10:00
2016年9月15日12:00至2016年9月30日23:59
這裏是一個腳本來生成一個示例表:
CREATE TABLE [dbo].[Table_1](
[from_date] [datetime] NOT NULL,
[to_date] [datetime] NULL,
CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED ([from_date] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
INSERT [dbo].[Table_1] ([from_date], [to_date]) VALUES (CAST(0x0000A6820083D600 AS DateTime), CAST(0x0000A682009450C0 AS DateTime))
INSERT [dbo].[Table_1] ([from_date], [to_date]) VALUES (CAST(0x0000A68200A4CB80 AS DateTime), CAST(0x0000A68200C5C100 AS DateTime))
我使用MSSQL 2008 R2
這是一個很好的開始。 http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/鑑於您發佈的內容,我們無法提供幫助。 –
哪個版本的SQL? – SqlOnly
你只是想顯示兩個日期之間的所有結果? – mfredy