Я создаю систему онлайн-бронирования и мне нужно исключить закрытые дни из бронирования и мне нужен запрос на выборку, чтобы узнать, является ли "дата" (Рождество)> = [ClosedFrom] И <= [ClosedTo] </p>
И ClosedFrom, и ClosedTo - это столбцы даты и времени в SQL Server 2008.
Вот как выглядит мой стол:
----------------------------------------------------------
ClosedDateID -- ClosedFrom -- ClosedTo
----------------------------------------------------------
1 -- 2010-12-24 -- 2010-01-04
2 -- 2011-04-20 -- 2010-04-20
----------------------------------------------------------
Надеемся, что приведенный ниже запрос покажет вам, чего я пытаюсь достичь:
SELECT [ClosedFrom],[ClosedTo]
FROM [Package.Closed.Dates]
where '2010-12-25' >= [ClosedFrom] AND '2010-12-25' <= [ClosedTo]
Заранее спасибо за помощь;)
UPDATE:
Спасибо Refilter за ваш ответ, но я все еще не могу заставить его работать :( У меня есть некоторые подробности ниже.
Вот мой настольный скрипт:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Package.Closed.Dates](
[ClosedDateID] [int] IDENTITY(1,1) NOT NULL,
[ClosedDate] [datetime] NULL,
[ClosedFrom] [datetime] NULL,
[ClosedTo] [datetime] NULL,
CONSTRAINT [PK_Package.Closed.Dates] PRIMARY KEY CLUSTERED
(
[ClosedDateID] 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 INTO [dbo].[Package.Closed.Dates]
([ClosedDate]
,[ClosedFrom]
,[ClosedTo])
VALUES
('2010-12-25'
,'2010-12-20'
,'2010-12-28'
GO
Вот мой запрос, который проверяет одну дату (ClosedDate), чтобы увидеть, закрыты ли мы (ЭТО ВОЗВРАЩАЕТСЯ «В тот день мы ЗАКРЫТЫ» - РАБОТАЕТ):
if exists (
SELECT [ClosedDate]
FROM [Package.Closed.Dates]
where [ClosedDate] = '2010-12-25'
)
select 'we are CLOSED that day'
else
select 'we are OPEN that day'
Вот ваш запрос к этой проверке между двумя датами (ClosedFrom & ClosedTo), чтобы увидеть, закрыты ли мы (ЭТО ВСЕГДА ВОЗВРАЩАЕТСЯ «МЫ ОТКРЫТЫ в тот день» - НЕ РАБОТАЕТ):
if exists (
SELECT [ClosedFrom],[ClosedTo]
FROM [Package.Closed.Dates]
where '2010-12-25' between [ClosedFrom] AND [ClosedTo]
)
select 'we are CLOSED that day'
else
select 'we are OPEN that day'
Я также попробовал следующий запрос (ЭТО ВСЕГДА ВОЗВРАЩАЕТСЯ «В тот день мы открыты» - НЕ РАБОТАЕТ):
<code>
if exists (
SELECT [ClosedFrom],[ClosedTo]
FROM [MWD.Package.Closed.Dates]
where '2010-12-25' >= [ClosedFrom] AND '2010-12-25' <= [ClosedTo]<br>
)
select 'we are CLOSED that day'
else
select 'we are OPEN that day'
Еще одна быстрая заметка, мне нужно посмотреть, является ли «дата» (Рождество)> = [ClosedFrom] И <= [ClosedTo] </p>