SQL Server Рассчитать день отправки для отгрузки
CREATE TABLE [dbo].[DispatchTime]
(
[dis_ID] [int] IDENTITY(1,1) NOT NULL,
[dis_fk_pro] [int] NOT NULL,
[dis_weekDay] [tinyint] NOT NULL,
[dis_displayDay] [varchar](12) NULL,
[dis_time] [time](0) NOT NULL,
CONSTRAINT [PK_DispatchTime] PRIMARY KEY (dis_ID)
)
http://i.stack.imgur.com/o688Q.png
У меня есть таблица, которая содержит информацию о времени отправки по будням. Ввод запроса - это дата, например '2015-01-27 13:30:00'
Идея состоит в том, что с даты я должен определить, в какой день будет происходить отправка. Логика заключается в том, что с даты, если это, например, во вторник, как в этом примере, и время меньше или равно времени в dis_time, то это день отправки. Если время больше, мне нужно проверить на следующий день, который соответствует критериям времени отправки, а затем добавить день на дату ввода в качестве вывода. Dis_times, который равен 00:00:00, указывает, что для этого дня не установлено никакого времени, и этот день не является днем отправки. Я мог бы изменить это на NULL, но пока это так.
Я пробовал много вещей, и это ухудшается каждый раз, когда я пытаюсь.
Я знаю, что могу найти и сопоставить входной день и время и сделать много, если тесты основаны на этом, но мне не удалось получить результат, который я описываю.
DECLARE @fromTime AS datetime
SET DATEFIRST 1
SET @fromTime = '2015-01-27 13:30:00
SELECT *
FROM DispatchTime
WHERE dis_weekDay = DATEPART(dw,@fromTime)
http://i.stack.imgur.com/8fosr.png
Так что мне нужно, это способ, чтобы найти следующий день для отправки, это также может быть, как это будет на следующей неделе, если, например, в частности. дата/день - воскресенье, а на следующий день - вторник на следующей неделе, которая соответствует критериям времени отправки.
Я пробовал использовать CTE с LAG и LEAD, но это не стоит публиковать, поскольку он полностью отключен.
Благодаря миллион он работал как шарм! Я только что добавил SET DATEFIRST 1, так как понедельник - первый день недели, который я использую :) – Flex