DATEDIFF UDF INTERVAL
Description
This UDF is used to resolve operations with intervals like:
INTERVAL - UNKNOWN
UNKNOWN - INTERVAL
DATE - INTERVAL
TIMESTAMP - INTERVAL
Custom UDF overloads
DATEADD_DDIF(string, date)
Parameters
INTERVAL_VALUE: The interval
Stringof the operation.D: The
DATEwhere the interval will be subtracted.
CREATE OR REPLACE FUNCTION PUBLIC.DATE_DIFF_UDF(INTERVAL_VALUE STRING,D DATE)
RETURNS DATE
LANGUAGE SQL
IMMUTABLE
AS
$$
WITH VARS(INPUT_VALUE, INPUT_PART) AS (
SELECT SUBSTR(INTERVAL_VALUE,11,POSITION('''',INTERVAL_VALUE,11)-11),
TRIM(SUBSTR(INTERVAL_VALUE,POSITION('''',INTERVAL_VALUE,11)+1)))
SELECT
CASE WHEN INPUT_PART='YEAR(2) TO MONTH' OR INPUT_PART='YEAR(4) TO MONTH' THEN
DATEADD(MONTHS,-1*PUBLIC.INTERVAL2MONTHS_UDF(INPUT_VALUE),D)
WHEN INPUT_PART='MONTH' THEN
DATEADD(MONTHS,-1*TO_NUMBER(INPUT_VALUE),D)
ELSE
DATEADD(MICROSECONDS,-1*1000000*PUBLIC.INTERVAL2SECONDS_UDF(INPUT_PART, INPUT_VALUE),D)::DATE
END CASE
FROM VARS
$$;DATEADD_DIFF(date, string)
Parameters
D: The
DATEwhere the interval will be subtracted.INTERVAL_VALUE: The interval
Stringof the operation.
DATEADD_DIFF(string, timestamp)
Parameters
INTERVAL_VALUE: The interval
Stringof the operation.D: The
TIMESTAMPwhere the interval will be subtracted.
DATEADD_DIFF(timestamp, string)
Parameters
D: The
TIMESTAMPwhere the interval will be subtracted.INTERVAL_VALUE: The interval
Stringof the operation.
Usage example
Oracle
Snowflake
Known Issues
1. INTERVAL - INTERVAL Operation is not supported
Snowflake does not support INTERVAL - INTERVAL operations.
Related EWIs
No related EWIs.
Last updated
Was this helpful?