Нам нужно определить конкретные даты, между которыми будут извлечены данные.
Например, проводки, которые происходят в первое число месяца, разносятся в систему бухгалтерского учета 2-го числа, а проводки, которые происходят в последний день месяца, разносятся в систему бухгалтерского учета 1-го числа следующего месяца.
Итак, если обычно я мог просто взять все записи, где месяц 10 для октября, теперь мне нужно извлечь записи, где дата находится между 2 октября и до 2 ноября.
У меня есть приведенный ниже код, чтобы получить самую раннюю дату (не имеет значения, если это выходные, поскольку в этом случае в записях будет отображаться дата публикации для первого рабочего дня после выходных):
Declare @EarliestDate varchar(8), @SQL NVARCHAR(1000), @sDate varchar(8)
-- get data for the last 3 months
SET @EarliestDate= CAST(DATEPART(YEAR,DATEADD(m,-3, getdate())) AS VARCHAR(4))
+ RIGHT('00' + CAST(DATEPART(mm, DATEADD(m,-2, getdate())) AS varchar(2)), 2)+ '02'
Теперь мне нужно проверить, является ли 1 ноября выходным днем, и если это так, используйте дату следующего понедельника.
Я запустил приведенный ниже код, но не могу заставить его работать должным образом:
Declare @LatestDate datetime
set @LatestDate = '01/11/2014'
if datepart(dw,@LatestDate) in (1,7)
Begin
set @LatestDate = DATEADD(d,1,@LatestDate )
End
Пожалуйста, покажите мне, где я ошибаюсь? В идеале он должен работать круглый год независимо от года, всегда получая первый рабочий день после 1-го числа месяца.