GetPeriods_For_RevenueComparationDaily.sql

76 lines | 1.779 kB Blame History Raw Download

set noexec off
go
if object_id('GetPeriods_For_RevenueComparationDaily') is not null
begin
	set noexec on
end	
go
-- создаем пустой объект
-- необходимо указать название процедуры
create procedure dbo.GetPeriods_For_RevenueComparationDaily as
raiserror ('Объект пустой. Ошибка при создаении объекта', -- Message text.
				16, -- Severity.
				1 -- State.
			);
go
set noexec off
go
alter procedure dbo.GetPeriods_For_RevenueComparationDaily
(
	@Date1 DateTime,
	@Date2 DateTime
) 
as 

begin


--declare @Date1 DateTime
--declare @Date2 DateTime

--set @Date1 = '20190527'
--set @Date2 = '20190526'

	declare @ActualPeriodDateFrom DateTime
	declare @ActualPeriodDateTo DateTime
	declare @LastPeriodDateFrom DateTime
	declare @LastPeriodDateTo DateTime
	declare @CurrentDate DateTime
	declare @CurrentDateTime DateTime
	declare @msOffset int

	if (@Date1 > @Date2)
	begin
		set @ActualPeriodDateFrom = cast(@Date1 as Date)
		set @LastPeriodDateFrom = cast(@Date2 as Date)
	end
	else
	begin
		set @ActualPeriodDateFrom = cast(@Date2 as Date)
		set @LastPeriodDateFrom = cast(@Date1 as Date)
	end
	
	set @CurrentDateTime = GetDate()
	set @CurrentDate = cast(@CurrentDateTime as Date)

	if (@ActualPeriodDateFrom = @CurrentDate)
	begin
		set @msOffset = datediff(ms, @CurrentDate, @CurrentDateTime)
		
		set @ActualPeriodDateTo = dateadd(ms, @msOffset, @ActualPeriodDateFrom)
		set @LastPeriodDateTo = dateadd(ms, @msOffset, @LastPeriodDateFrom)
	end
	else
	begin
		set @ActualPeriodDateTo = dateadd(ms, -2, dateadd(day, 1, @ActualPeriodDateFrom))
		set @LastPeriodDateTo = dateadd(ms, -2, dateadd(day, 1, @LastPeriodDateFrom))
	end

	select
		@ActualPeriodDateFrom as ActualPeriodDateFrom,
		@ActualPeriodDateTo as ActualPeriodDateTo,
		@LastPeriodDateFrom as LastPeriodDateFrom,
		@LastPeriodDateTo as LastPeriodDateTo

end