UFN_CURRENCYEXCHANGERATE_GETLATEST
Returns the most recent valid exchange rate from one currency to another.
Return
Return Type |
---|
uniqueidentifier |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@FROMCURRENCYID | uniqueidentifier | IN | |
@TOCURRENCYID | uniqueidentifier | IN | |
@ASOFDATE | datetime | IN | |
@TYPECODE | tinyint | IN | |
@SOURCECODEID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST
(
@FROMCURRENCYID uniqueidentifier,
@TOCURRENCYID uniqueidentifier,
@ASOFDATE datetime = null,
@TYPECODE tinyint = 1, -- 0 = latest corporate rate, 1 = latest daily/corporate rate
@SOURCECODEID uniqueidentifier = null
)
returns uniqueidentifier
as begin
declare @DATE datetime;
declare @DATEWITHTIMEOFFSET datetimeoffset;
if @ASOFDATE is null
set @DATEWITHTIMEOFFSET = getutcdate();
else
begin
set @DATE = @ASOFDATE;
--If the date does not have a time component, use the latest time
--so that the latest exchange rate for this date will be used.
if @DATE = dbo.UFN_DATE_GETEARLIESTTIME(@DATE)
set @DATE = dbo.UFN_DATE_GETLATESTTIME(@DATE);
set @DATEWITHTIMEOFFSET = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(@DATE, 0);
end
return (
select top 1
CURRENCYEXCHANGERATE.ID
from
dbo.CURRENCYEXCHANGERATE
left join dbo.CURRENCYEXCHANGERATESOURCECODE on CURRENCYEXCHANGERATESOURCECODE.ID = CURRENCYEXCHANGERATE.SOURCECODEID
where
(CURRENCYEXCHANGERATE.FROMCURRENCYID = @FROMCURRENCYID) and
(CURRENCYEXCHANGERATE.TOCURRENCYID = @TOCURRENCYID) and
(CURRENCYEXCHANGERATE.ASOFDATE <= @DATEWITHTIMEOFFSET) and
(CURRENCYEXCHANGERATE.EXPIRATIONDATE is null or CURRENCYEXCHANGERATE.EXPIRATIONDATE >= @DATEWITHTIMEOFFSET) and
((CURRENCYEXCHANGERATE.TYPECODE = 0 and @TYPECODE = 0) or
(CURRENCYEXCHANGERATE.TYPECODE in (0,1) and @TYPECODE = 1)) and
(@SOURCECODEID is null or CURRENCYEXCHANGERATE.SOURCECODEID = @SOURCECODEID)
order by
CURRENCYEXCHANGERATE.ASOFDATE desc,
CURRENCYEXCHANGERATE.DATEADDED desc,
CURRENCYEXCHANGERATE.DATECHANGED desc,
CURRENCYEXCHANGERATE.RATE
)
end