У меня есть таблица на SQL Server, в которой хранятся даты и независимо от того, являются ли они рабочим днем или нет, включая праздничные дни.Проверьте, является ли вход varchar действительной датой
Date_Id Date_Date Date_JDE Is_WorkingDay
20141223 2014-12-23 114357 1
20141224 2014-12-24 114358 1
20141225 2014-12-25 114359 0
20141226 2014-12-26 114360 0
20141227 2014-12-27 114361 0
20141228 2014-12-28 114362 0
20141229 2014-12-29 114363 1
Я создал хранимую процедуру, которая проходит через стол и находит дату, и если дата не является рабочим днем он находит следующий, что есть.
DECLARE @TargetDate Date = '2014-12-29'
IF (@TargetDate IS NOT NULL)
BEGIN
SELECT TOP 1 *
FROM dbo.Dates
WHERE Date_Date >= @TargetDate
AND Date_Date <= (SELECT MIN(Date_Date)
FROM dbo.Dates
WHERE Is_WorkingDay != 0 AND Date_Date >= @TargetDate)
ORDER BY Date_Date DESC
END
ELSE
BEGIN
RAISERROR ('(TargetDate is required) is required ',10,1);
RETURN
END
Как я могу подтвердить, что дата действительна, например, она находится в правильном формате и является реальной датой?
Как вы думаете, что «Выберите строку, то не перебирать, пока условия выполнены» уместно описать ваше требование, которое на самом деле, кажется, : «Как проверить, является ли varchar допустимым дата-время»? –
@TimSchmelter Извинения, изменено название вопроса. – user667430
Вы не можете доверять, что даты в dbo.Dates действительны? У вас нет этой таблицы? Можете ли вы построить тот, который у вас есть и которому доверяете? –