SQL,是两个日期范围内的日期

时间:2015-03-18 18:47:17

标签: c# sql sql-server

我有一个SQL Server数据库,通过SQL Server MS管理,与c#应用程序连接,我正在努力解决某个问题。

该数据库用于营地预订系统,该系统包含以下与查询相关的表格。

预订( BookingID ,StaffID,CustomerID,PitchID,StartDate,EndDate)

PITCH( PitchID ,TypeOfPitch,容量)

许多预订都会出现一个推销。

我希望创建一个查询,它将检查特定日期的音高的可用性,该日期是从dateTimePicker输入的。查询将返回可用的音高并将其显示在datagridview中。这是我到目前为止所做的。

SELECT * FROM dbo.PITCH, dbo.Booking 
WHERE @Date 
NOT BETWEEN dbo.BOOKING.[Start Date] AND dbo.BOOKING.[End Date]

此SQL代码无法正常工作,它会为表格中的每个预订返回一个间距。 SQL的所有c#都在工作,我只是不擅长SQL查询并需要一些帮助! 提前致谢

3 个答案:

答案 0 :(得分:1)

SELECT * FROM dbo.PITCH 
WHERE PitchID NOT IN 
(
    -- sub-query to take reserved pitches
    select PitchID from dbo.Booking 
    where @Date BETWEEN [Start Date] AND [End Date]
)

答案 1 :(得分:0)

以下应该做你想要的。子查询提取在给定日期期间预订的投球。所以你希望不在那个查询中的音高。

Select *
From dbo.PITCH
WHERE PitchID Not In (
    select PitchID 
    from dbo.Booking 
    where @Date between [Start Date] And [End Date])

答案 2 :(得分:0)

DECLARE @DATE DATETIME
SELECT 
,b.BookingID 
,b.StaffID 
,b.CustomerID
,b.PitchID 
,b.StartDate
,b.EndDate
,p.capacity

from Dbo.Pitch  p
INNER JOIN Booking b ON b.PitchID = p.PitchID
WHERE @Date  BETWEEN b.StartDate AND b.EndDate
ORDER BY @DATE DESC 

由于您希望节目从顶部的PICKER中选择日期,因此您也需要ORDER BY CLAUSE。 养成这样写的习惯,因为它可以帮助你轻松解决问题并分析问题。 希望它有所帮助