DATEADD UDF
Description
This UDF is used as a template for all cases when there is an addition between a DATE
or TIMESTAMP
type and FLOAT
type.
Custom UDF overloads
DATEADD_UDF(date, float)
Parameters
FIRST_PARAM: The first
DATE
of the operation.SECOND_PARAM: The
FLOAT
to be added.
CREATE OR REPLACE FUNCTION PUBLIC.DATEADD_UDF(FIRST_PARAM DATE, SECOND_PARAM FLOAT)
RETURNS DATE
LANGUAGE SQL
IMMUTABLE
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
SELECT FIRST_PARAM + SECOND_PARAM::NUMBER
$$;
DATEADD_UDF(float, date)
Parameters
FIRST_PARAM: The
FLOAT
to be added.SECOND_PARAM: The
DATE
of the operation.
CREATE OR REPLACE FUNCTION PUBLIC.DATEADD_UDF(FIRST_PARAM FLOAT, SECOND_PARAM DATE)
RETURNS DATE
LANGUAGE SQL
IMMUTABLE
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
SELECT FIRST_PARAM::NUMBER + SECOND_PARAM
$$;
DATEADD_UDF(timestamp, float)
Parameters
FIRST_PARAM: The first
TIMESTAMP
of the operation.SECOND_PARAM: The
FLOAT
to be added.
CREATE OR REPLACE FUNCTION PUBLIC.DATEADD_UDF(FIRST_PARAM TIMESTAMP, SECOND_PARAM FLOAT)
RETURNS TIMESTAMP
LANGUAGE SQL
IMMUTABLE
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
SELECT DATEADD(day, SECOND_PARAM,FIRST_PARAM)
$$;
DATEADD_UDF(float, timestamp)
Parameters
FIRST_PARAM: The
FLOAT
of the operation.SECOND_PARAM: The
TIMESTAMP
of the operation.
CREATE OR REPLACE FUNCTION PUBLIC.DATEADD_UDF(FIRST_PARAM FLOAT, SECOND_PARAM TIMESTAMP)
RETURNS TIMESTAMP
LANGUAGE SQL
IMMUTABLE
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
SELECT DATEADD(day, FIRST_PARAM,SECOND_PARAM)
$$;
Usage example
Oracle
SELECT
TO_TIMESTAMP('03/08/2009, 12:47 AM', 'dd/mm/yy, hh:mi AM')+62.40750856543442
FROM DUAL;
Snowflake
SELECT
PUBLIC.DATEADD_UDF(TO_TIMESTAMP('03/08/2009, 12:47 AM', 'dd/mm/yy, hh:mi AM'), 62.40750856543442)
FROM DUAL;
Known Issues
1. Differences in time precision
When there are operations between Dates or Timestamps and Floats, the time may differ from Oracle's. There is an action item to fix this issue.
Related EWIs
No EWIs related.
Last updated