0
주어진 날짜 범위가 이고 테이블의 날짜 범위 목록에이 중복되는지 확인하려면 저장 프로 시저를 작성해야합니다.주어진 날짜 범위가 SQL Server 저장 프로 시저의 날짜 범위 목록에 있는지 여부를 찾는 방법은 무엇입니까?
예)
데이터베이스 : SQL 서버 2008 R2
SP Input: 2012-12-17 18:30:00.000 2012-12-19 18:29:59.000
SP Output(Out parameter): True/False
예약 표 샘플 데이터 : 저장 프로 시저
FromDate ToDate
2012-12-11 18:30:00.000 2012-12-12 18:29:59.000
2012-12-12 18:30:00.000 2012-12-13 18:29:59.000
2012-12-10 18:30:00.000 2012-12-11 18:29:59.000
2012-12-18 18:30:00.000 2012-12-19 18:29:59.000
2012-12-23 18:30:00.000 2012-12-28 18:29:59.000
2012-12-17 18:30:00.000 2012-12-18 18:29:59.000
2012-12-19 18:30:00.000 2012-12-22 18:29:59.000
2012-12-16 18:30:00.000 2012-12-17 18:29:59.000
2012-12-13 18:30:00.000 2012-12-14 18:29:59.000
2012-12-11 23:00:00.000 2012-12-12 22:59:59.000
:
USE [BookingDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[FindConflict]
@FromDate datetime,
@ToDate datetime,
@IsConflict bit OUT
AS
BEGIN
?????????????????????(what to write here)
END
,
SQL은 :
USE [BookingDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[BookingAdmin](
[PK_BookingAdmin] [int] IDENTITY(1000,1) NOT NULL,
[FromDate] [datetime] NOT NULL,
[ToDate] [datetime] NOT NULL,
CONSTRAINT [PK_BookingAdmin] PRIMARY KEY CLUSTERED
(
[PK_BookingAdmin] 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
SET IDENTITY_INSERT [dbo].[BookingAdmin] ON
INSERT [dbo].[BookingAdmin] ([PK_BookingAdmin], [FromDate], [ToDate]) VALUES (1048, CAST(0x0000A1240130DEE0 AS DateTime), CAST(0x0000A1250130DDB4 AS DateTime))
INSERT [dbo].[BookingAdmin] ([PK_BookingAdmin], [FromDate], [ToDate]) VALUES (1049, CAST(0x0000A1250130DEE0 AS DateTime), CAST(0x0000A1260130DDB4 AS DateTime))
INSERT [dbo].[BookingAdmin] ([PK_BookingAdmin], [FromDate], [ToDate]) VALUES (1050, CAST(0x0000A1230130DEE0 AS DateTime), CAST(0x0000A1240130DDB4 AS DateTime))
INSERT [dbo].[BookingAdmin] ([PK_BookingAdmin], [FromDate], [ToDate]) VALUES (1051, CAST(0x0000A12B0130DEE0 AS DateTime), CAST(0x0000A12C0130DDB4 AS DateTime))
INSERT [dbo].[BookingAdmin] ([PK_BookingAdmin], [FromDate], [ToDate]) VALUES (1052, CAST(0x0000A1300130DEE0 AS DateTime), CAST(0x0000A1350130DDB4 AS DateTime))
INSERT [dbo].[BookingAdmin] ([PK_BookingAdmin], [FromDate], [ToDate]) VALUES (1053, CAST(0x0000A12A0130DEE0 AS DateTime), CAST(0x0000A12B0130DDB4 AS DateTime))
INSERT [dbo].[BookingAdmin] ([PK_BookingAdmin], [FromDate], [ToDate]) VALUES (1055, CAST(0x0000A12C0130DEE0 AS DateTime), CAST(0x0000A12F0130DDB4 AS DateTime))
INSERT [dbo].[BookingAdmin] ([PK_BookingAdmin], [FromDate], [ToDate]) VALUES (1056, CAST(0x0000A1290130DEE0 AS DateTime), CAST(0x0000A12A0130DDB4 AS DateTime))
INSERT [dbo].[BookingAdmin] ([PK_BookingAdmin], [FromDate], [ToDate]) VALUES (1057, CAST(0x0000A1260130DEE0 AS DateTime), CAST(0x0000A1270130DDB4 AS DateTime))
INSERT [dbo].[BookingAdmin] ([PK_BookingAdmin], [FromDate], [ToDate]) VALUES (1058, CAST(0x0000A124017B0740 AS DateTime), CAST(0x0000A125017B0614 AS DateTime))
GO
CREATE PROCEDURE [dbo].[FindConflict]
@FromDate datetime,
@ToDate datetime,
@IsConflict bit OUT
AS
BEGIN
if exists (select * from BookingAdmin where FromDate = @ToDate and ToDate = @FromDate)
set @IsConflict = 1
else
set @IsConflict = 0
END
답장을 보내 주셔서 감사합니다. 그러나 주어진 날짜 범위가 데이터베이스의 날짜 범위 목록과 중복되는지 여부를 알아야합니다. –
님이 –
고마워했습니다. 그러나 작동하지 않습니다 : ( –