Я пишу запрос TSQL, чтобы найти следующую доступную дату и время из списка встреч. До сих пор то, что мне удалось получить, действительно находит пробелы в запросе времени, но я не могу найти отличный способ исключить ночи (скажем, после 7 вечера).
;WITH CTE
AS ( SELECT
ID,StartAptDate,EndAptDate,
RowNumber = ROW_NUMBER() OVER( ORDER BY StartAptDate ASC )
FROM Appointments WHERE StylistId = 1 AND StartAptDate > CAST( CONVERT( CHAR(8), GetDate(), 112) AS DATETIME)
)
SELECT FirstApptAvail = min( a.EndAptDate )
FROM CTE a
INNER JOIN CTE b
ON a.RowNumber = b.RowNumber - 1
WHERE datediff( minute, a.EndAptDate, b.StartAptDate) >= 15 AND ...
Небольшой псевдокод для ... будет что-то вроде этого
(a.StartAptDate @ 7pm AND a.StartAptDate> GETDATE + 1 @ 8am )
Часть, которую я не могу понять, состоит в построении правой стороны каждого сравнения. Мне нужно исключить все, что может быть возвращено между 7 вечера в эту ночь - 8 утра на следующее утро.
Заранее спасибо