UFN_EVENT_ISONSALEBYDATETIMEOFFSET_INLINE
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@EVENTID | uniqueidentifier | IN | |
@SALEDATETIMEWITHOFFSET | datetimeoffset | IN | |
@SALESMETHODTYPECODE | tinyint | IN |
Definition
Copy
create function dbo.UFN_EVENT_ISONSALEBYDATETIMEOFFSET_INLINE
(
@EVENTID uniqueidentifier,
@SALEDATETIMEWITHOFFSET datetimeoffset,
@SALESMETHODTYPECODE tinyint
)
returns table
as return
select isnull((
select
case
when EVENTSALESMETHOD.ONSALEDATETIMEWITHOFFSET <= @SALEDATETIMEWITHOFFSET and (OFFSALECALCULATION.OFFSALEDATETIMEWITHOFFSET is null or @SALEDATETIMEWITHOFFSET <= OFFSALECALCULATION.OFFSALEDATETIMEWITHOFFSET) then
1
else
0
end as ISONSALE
from
dbo.EVENTSALESMETHOD
inner join
dbo.EVENT on EVENTSALESMETHOD.EVENTID = EVENT.ID
inner join
dbo.SALESMETHOD on SALESMETHOD.ID = EVENTSALESMETHOD.SALESMETHODID
left join dbo.PROGRAMSALESMETHOD on
EVENTSALESMETHOD.SALESMETHODID = PROGRAMSALESMETHOD.SALESMETHODID and
EVENT.PROGRAMID = PROGRAMSALESMETHOD.PROGRAMID
outer apply (
select
case PROGRAMSALESMETHOD.ONSALEENDTYPECODE
when 0 then -- Event start time
EVENT.STARTDATETIMEWITHOFFSET
when 1 then -- Minutes before start
dateadd(mi, -[PROGRAMSALESMETHOD].[ONSALEENDINTERVAL], [EVENT].[STARTDATETIMEWITHOFFSET])
when 2 then -- Hours before start
dateadd(hh, -[PROGRAMSALESMETHOD].[ONSALEENDINTERVAL], [EVENT].[STARTDATETIMEWITHOFFSET])
when 3 then -- Minutes after start
dateadd(mi, [PROGRAMSALESMETHOD].[ONSALEENDINTERVAL], [EVENT].[STARTDATETIMEWITHOFFSET])
end as OFFSALEDATETIMEWITHOFFSET
) as OFFSALECALCULATION
where
EVENTID = @EVENTID
and SALESMETHOD.TYPECODE = @SALESMETHODTYPECODE
), 0) as ISONSALE