LogoLogo
SnowflakeDocumentation Home
  • Snowflake SnowConvert Documentation
  • General (Beta)
    • Getting Started
      • System Requirements
      • Download and Access
      • Best practices
      • End User License Agreement
      • Release Notes ( Beta)
    • General Issues and Troubleshooting
      • FAQ and Troubleshooting
      • Complex Pattern Issues
        • MSCCP0001
        • MSCCP0002
        • MSCCP0003
        • MSCCP0004
        • MSCCP0005
        • MSCCP0006
        • MSCCP0007
        • MSCCP0008
        • MSCCP0009
        • MSCCP0010
        • MSCCP0011
      • Conversion Issues
        • MSCEWI1001
        • MSCEWI1002
        • MSCEWI1003
        • MSCEWI1004
        • MSCEWI1005
        • MSCEWI1006
        • MSCEWI1007
        • MSCEWI1009
        • MSCEWI1010
        • MSCEWI1011
        • MSCEWI1012
        • MSCEWI1013
        • MSCEWI1014
        • MSCEWI1015
        • MSCEWI1016
        • MSCEWI1017
        • MSCEWI1018
        • MSCEWI1019
        • MSCEWI1020
        • MSCEWI1021
        • MSCEWI1022
        • MSCEWI1023
        • MSCEWI1024
        • MSCEWI1025
        • MSCEWI1026
        • MSCEWI1027
        • MSCEWI1028
        • MSCEWI1029
        • MSCEWI1030
        • MSCEWI1031
        • MSCEWI1032
        • MSCEWI1033
        • MSCEWI1034
        • MSCEWI1035
        • MSCEWI1036
        • MSCEWI1037
        • MSCEWI1038
        • MSCEWI1039
        • MSCEWI1040
        • MSCEWI1041
        • MSCEWI1042
        • MSCEWI1043
        • MSCEWI1044
        • MSCEWI1045
        • MSCEWI1046
        • MSCEWI1047
        • MSCEWI1048
        • MSCEWI1049
        • MSCEWI1050
        • MSCEWI1051
        • MSCEWI1052
        • MSCEWI1053
        • MSCEWI1054
        • MSCEWI1055
        • MSCEWI1056
        • MSCEWI1057
        • MSCEWI1058
          • Teradata
          • Oracle
          • SQL Server
        • MSCEWI1059
        • MSCEWI1060
        • MSCEWI1061
        • MSCEWI1062
        • MSCEWI1063
        • MSCEWI1064
        • MSCEWI1065
        • MSCEWI1066
        • MSCEWI1067
        • MSCEWI1068
        • MSCEWI1069
        • MSCEWI1070
        • MSCEWI1071
        • MSCEWI1072
        • MSCEWI1073
        • MSCEWI1074
        • MSCEWI1075
        • MSCEWI1076
        • MSCEWI1077
        • MSCEWI1078
        • MSCEWI1079
        • MSCEWI1080
        • MSCEWI1081
        • MSCEWI1082
        • MSCEWI1083
        • MSCEWI1084
        • MSCEWI1086
        • MSCEWI1087
        • MSCEWI1088
        • MSCEWI1089
        • MSCEWI1090
        • MSCEWI1091
        • MSCEWI1092
        • MSCEWI1093
        • MSCEWI1094
        • MSCEWI1095
        • MSCEWI1096
        • MSCEWI1097
        • MSCEWI1098
        • MSCEWI1099
        • MSCEWI1100
        • MSCEWI1101
        • MSCEWI1102
        • MSCEWI1108
      • Informative Issues
        • MSCINF0001
        • MSCINF0002
        • MSCINF0003
        • MSCINF0004
        • MSCINF0005
        • MSCINF0006
        • MSCINF0007
        • MSCINF0008
    • Review Results
      • Output Code
      • Reports
        • Assessment Report
          • Overall Conversion Summary
          • SQL Conversion Summary
          • Scripts Line Conversion Summary
          • Object Conversion Summary
          • File and Object Level Breakdown - SQL Files
          • File and Object Level Breakdown - SQL Identified Objects
          • Scripts - Files
          • Scripts - Identified Objects
          • Schemas
          • Databases & Schemas
        • Top-Level Objects Report
        • Top-Level Queries Report
        • Issues Report
        • HTML Report
        • Missing Objects Report
        • Object References Report
        • Elements Report
    • How to Use SnowConvert with Docker
  • User Guide (Beta)
    • User Guide
    • How to install the tool
      • Linux
      • Windows
      • MacOS
    • How to update the tool
    • How to request an access code
    • What is a SnowConvert Project?
    • Supported Source Platforms
    • Assessment
      • Analyzing subfolders
    • Conversion
      • Converting subfolders
      • General Conversion Settings
      • Teradata Conversion Settings
      • Oracle Conversion Settings
      • SQL Server Conversion Settings
    • How to use the SnowConvert CLI
    • Additional Parameters
      • SnowConvert for SQL
      • Spark SnowConvert
    • Command Line Interface
  • FOR SQL LANGUAGES (BETA)
    • Release Notes
      • 2024
      • 2023
    • General Issues and Troubleshooting
  • General (Legacy)
    • Getting Started
      • Download and Access
      • Installation and Licensing
      • End User License Agreement
    • Contact Us
  • Function Reference
    • Teradata
      • CHAR2HEXINT_UDF
      • CHCKNUM_UDF
      • DATEADD_UDF
      • TIMESTAMP_DIFFERENCE_UDF
      • EXTRACT_TIMESTAMP_DIFFERENCE_UDF
      • TIME_DIFFERENCE_UDF
      • DATE_TO_INT_UDF
      • INT_TO_DATE_UDF
      • FIRST_DAY_OF_MONTH_ISO_UDF
      • DAYNUMBER_OF_MONTH_UDF
      • DAYNUMBER_OF_YEAR_UDF
      • COMPUTE_EXPAND_ON_UDF
      • EXPAND_ON_UDF
      • DIFFTTIME_PERIOD_UDF
      • ROW_COUNT_UDF
      • GETQUERYBANDVALUE_UDF
      • GETQUERYBANDVALUE_UDF
      • INSTR_UDF
      • INSTR_UDF
      • INSTR_UDF
      • INTERVAL_MULTIPLY_UDF
      • INTERVAL_ADD_UDF
      • INTERVAL_TO_MONTHS_UDF
      • INTERVAL_TO_SECONDS_UDF
      • JSON_EXTRACT_DOT_NOTATION_UDF
      • JSON_EXTRACT_UDF
      • JULIAN_TO_DATE_UDF
      • MONTHS_BETWEEN_UDF
      • NULLIFZERO_UDF
      • NVP_UDF
      • PERIOD_INTERSECT_UDF
      • PERIOD_OVERLAPS_UDF
      • QUARTERNUMBER_OF_YEAR_UDF
      • ROUND_DATE_UDF
      • SUBSTR_UDF
      • SUBSTR_UDF
      • TD_DAY_OF_CALENDAR_UDF
      • TD_DAY_OF_WEEK_UDF
      • TD_DAY_OF_WEEK_COMPATIBLE_UDF
      • TD_WEEK_OF_YEAR_UDF
      • TD_DAY_OF_WEEK_COMPATIBLE_UDF
      • FIRST_DAY_JANUARY_OF_ISO_UDF
      • YEAR_BEGIN_ISO_UDF
      • TD_YEAR_BEGIN_UDF
      • LAST_DAY_DECEMBER_OF_ISO_UDF
      • YEAR_END_ISO_UDF
      • TD_YEAR_END_UDF
      • TIMESTAMP_ADD_UDF
      • DAY_OF_WEEK_LONG_UDF
      • MONTH_NAME_LONG_UDF
      • TO_BYTES_HEX_UDF
      • CENTURY_UDF
      • DAYNAME_LONG_UDF
      • DAYNAME_LONG_UDF
      • DATE_LONG_UDF
      • FULL_MONTH_NAME_UDF
      • ISO_YEAR_PART_UDF
      • JULIAN_DAY_UDF
      • MONTH_SHORT_UDF
      • ROMAN_NUMERALS_MONTH_UDF
      • SECONDS_PAST_MIDNIGHT_UDF
      • WEEK_OF_MONTH_UDF
      • YEAR_PART_UDF
      • YEAR_WITH_COMMA_UDF
      • INSERT_CURRENCY_UDF
      • WRAP_NEGATIVE_WITH_ANGLE_BRACKETS_UDF
      • TRANSLATE_CHK_UDF
      • WEEK_NUMBER_OF_QUARTER_COMPATIBLE_UDF
      • WEEK_NUMBER_OF_QUARTER_ISO_UDF
      • WEEK_NUMBER_OF_QUARTER_COMPATIBLE_UDF
      • WEEKNUMBER_OF_MONTH_UDF
  • For Teradata
    • Introduction
    • Getting Started (LEGACY)
      • Training and Support
      • Code Extraction
      • Using SnowConvert
      • Review Results
        • Assessment.csv Report
        • Assessment.docx Report
        • Elements Report
        • Issues Report
        • Lineage Report
        • Output code
        • TopLevelObjects Report
    • Command Line Interface
      • Renaming feature
    • Code Extraction
    • Processing the code
      • Preprocess tasks
    • SQL Translation Reference
    • Issues and Troubleshooting
      • General Issues
      • MSCEWI2001
      • MSCEWI2002
      • MSCEWI2003
      • MSCEWI2004
      • MSCEWI2005
      • MSCEWI2006
      • MSCEWI2007
      • MSCEWI2008
      • MSCEWI2009
      • MSCEWI2010
      • MSCEWI2011
      • MSCEWI2012
      • MSCEWI2013
      • MSCEWI2014
      • MSCEWI2015
      • MSCEWI2016
      • MSCEWI2017
      • MSCEWI2018
      • MSCEWI2019
      • MSCEWI2020
      • MSCEWI2021
      • MSCEWI2022
      • MSCEWI2023
      • MSCEWI2024
      • MSCEWI2025
      • MSCEWI2026
      • MSCEWI2027
      • MSCEWI2028
      • MSCEWI2029
      • MSCEWI2030
      • MSCEWI2031
      • MSCEWI2032
      • MSCEWI2033
      • MSCEWI2034
      • MSCEWI2035
      • MSCEWI2036
      • MSCEWI2037
      • MSCEWI2038
      • MSCEWI2039
      • MSCEWI2040
      • MSCEWI2041
      • MSCEWI2042
      • MSCEWI2043
      • MSCEWI2044
      • MSCEWI2045
      • MSCEWI2046
      • MSCEWI2047
      • MSCEWI2049
      • MSCEWI2050
      • MSCEWI2051
      • MSCEWI2052
      • MSCEWI2053
      • MSCEWI2054
      • MSCEWI2055
      • MSCEWI2056
      • MSCEWI2057
      • MSCEWI2058
      • MSCEWI2059
      • MSCEWI2060
      • MSCEWI2061
      • MSCEWI2062
      • MSCEWI2063
      • MSCEWI2064
      • MSCEWI2065
      • MSCEWI2066
      • MSCEWI2067
      • MSCEWI2068
      • MSCEWI2069
      • MSCEWI2070
      • MSCEWI2071
      • MSCEWI2072
      • MSCEWI2073
      • MSCEWI2074
      • MSCEWI2075
      • MSCEWI2076
      • MSCEWI2077
      • MSCEWI2078
      • MSCEWI2079
      • MSCEWI2080
      • MSCEWI2081
      • MSCEWI2082
      • MSCEWI2083
      • MSCEWI2084
      • MSCEWI2085
      • MSCEWI2086
      • MSCEWI2087
      • MSCEWI2088
      • MSCEWI2089
      • MSCEWI2090
      • MSCEWI2091
    • Release Notes
      • 2024
      • 2023
      • 2022
      • 2021
      • 2020
      • Roadmap
    • Considerations
  • For Oracle
    • Introduction
    • Getting Started (LEGACY)
      • Using SnowConvert
      • Review Results
        • Output Code
        • Assessment Report
        • Issues Report
        • Top-Level Objects Report
    • Command Line Interface
    • Code Extraction
    • Processing the code
      • Preprocess tasks
    • Issues and Troubleshooting
      • General Issues
      • MSCEWI3001
      • MSCEWI3002
      • MSCEWI3003
      • MSCEWI3004
      • MSCEWI3005
      • MSCEWI3006
      • MSCEWI3007
      • MSCEWI3008
      • MSCEWI3009
      • MSCEWI3010
      • MSCEWI3011
      • MSCEWI3012
      • MSCEWI3013
      • MSCEWI3014
      • MSCEWI3015
      • MSCEWI3016
      • MSCEWI3017
      • MSCEWI3018
      • MSCEWI3019
      • MSCEWI3020
      • MSCEWI3021
      • MSCEWI3022
      • MSCEWI3023
      • MSCEWI3024
      • MSCEWI3025
      • MSCEWI3026
      • MSCEWI3027
      • MSCEWI3028
      • MSCEWI3029
      • MSCEWI3030
      • MSCEWI3031
      • MSCEWI3032
      • MSCEWI3033
      • MSCEWI3034
      • MSCEWI3035
      • MSCEWI3036
      • MSCEWI3037
      • MSCEWI3038
      • MSCEWI3039
      • MSCEWI3040
      • MSCEWI3041
      • MSCEWI3042
      • MSCEWI3043
      • MSCEWI3044
      • MSCEWI3046
      • MSCEWI3047
      • MSCEWI3048
      • MSCEWI3049
      • MSCEWI3050
      • MSCEWI3051
      • MSCEWI3052
      • MSCEWI3053
      • MSCEWI3054
      • MSCEWI3055
      • MSCEWI3056
      • MSCEWI3057
      • MSCEWI3058
      • MSCEWI3059
      • MSCEWI3060
      • MSCEWI3061
      • MSCEWI3062
      • MSCEWI3063
      • MSCEWI3064
      • MSCEWI3065
      • MSCEWI3066
      • MSCEWI3067
      • MSCEWI3068
      • MSCEWI3069
      • MSCEWI3070
      • MSCEWI3071
      • MSCEWI3072
      • MSCEWI3073
      • MSCEWI3074
      • MSCEWI3075
      • MSCEWI3076
      • MSCEWI3077
      • MSCEWI3078
      • MSCEWI3079
      • MSCEWI3080
      • MSCEWI3081
      • MSCEWI3082
      • MSCEWI3083
      • MSCEWI3084
      • MSCEWI3085
      • MSCEWI3086
      • MSCEWI3087
      • MSCEWI3088
      • MSCEWI3089
      • MSCEWI3090
      • MSCEWI3091
      • MSCEWI3092
      • MSCEWI3093
      • MSCEWI3094
      • MSCEWI3095
      • MSCEWI3096
      • MSCEWI3097
      • MSCEWI3098
      • MSCEWI3099
      • MSCEWI3100
      • MSCEWI3101
      • MSCEWI3102
      • MSCEWI3103
      • MSCEWI3104
      • MSCEWI3105
      • MSCEWI3106
      • MSCEWI3107
      • MSCEWI3108
      • MSCEWI3109
      • MSCEWI3110
      • MSCEWI3111
      • MSCEWI3112
      • MSCEWI3113
      • MSCEWI3114
      • MSCEWI3115
      • MSCEWI3116
      • MSCEWI3117
      • MSCEWI3118
      • MSCEWI3119
      • MSCEWI3120
      • MSCEWI3121
      • MSCEWI3122
      • MSCEWI3123
      • MSCEWI3124
      • MSCEWI3125
      • MSCEWI3126
      • MSCEWI3127
      • MSCEWI3128
      • MSCEWI3129
      • MSCEWI3130
      • MSCEWI3131
      • MSCEWI3132
      • MSCEWI3133
      • MSCEWI3135
    • Release Notes
      • 2023
      • 2022
      • 2021
      • 2020
      • Roadmap
    • SQL Translation Reference
  • FOR SQL SERVER
    • Introduction
    • Getting Started (LEGACY)
      • Training and Support
      • Arrange the Source Code
      • Review Results
        • Output Code
        • Assessment Report
        • Issues Report
        • TopLevelObjects Report
      • Using SnowConvert
    • Command Line Interface
    • Code Extraction
    • Translation Reference
    • Issues and Troubleshooting
      • General Issues
      • MSCEWI4001
      • MSCEWI4002
      • MSCEWI4003
      • MSCEWI4004
      • MSCEWI4005
      • MSCEWI4006
      • MSCEWI4007
      • MSCEWI4008
      • MSCEWI4009
      • MSCEWI4010
      • MSCEWI4011
      • MSCEWI4012
      • MSCEWI4013
      • MSCEWI4014
      • MSCEWI4015
      • MSCEWI4016
      • MSCEWI4017
      • MSCEWI4018
      • MSCEWI4019
      • MSCEWI4020
      • MSCEWI4021
      • MSCEWI4022
      • MSCEWI4023
      • MSCEWI4024
      • MSCEWI4025
      • MSCEWI4026
      • MSCEWI4027
      • MSCEWI4028
      • MSCEWI4029
      • MSCEWI4030
      • MSCEWI4031
      • MSCEWI4032
      • MSCEWI4033
      • MSCEWI4034
      • MSCEWI4035
      • MSCEWI4036
      • MSCEWI4037
      • MSCEWI4038
      • MSCEWI4039
      • MSCEWI4040
      • MSCEWI4041
      • MSCEWI4042
      • MSCEWI4043
      • MSCEWI4044
      • MSCEWI4045
      • MSCEWI4046
      • MSCEWI4047
      • MSCEWI4048
      • MSCEWI4049
      • MSCEWI4050
      • MSCEWI4051
      • MSCEWI4052
      • MSCEWI4053
      • MSCEWI4054
      • MSCEWI4055
      • MSCEWI4056
      • MSCEWI4057
      • MSCEWI4058
      • MSCEWI4059
      • MSCEWI4060
      • MSCEWI4061
      • MSCEWI4062
      • MSCEWI4063
      • MSCEWI4064
      • MSCEWI4065
      • MSCEWI4066
      • MSCEWI4067
      • MSCEWI4068
      • MSCEWI4069
      • MSCEWI4070
      • MSCEWI4071
      • MSCEWI4072
      • MSCEWI4073
      • MSCEWI4074
      • MSCEWI4075
    • Release Notes
      • 2023
      • 2022
      • 2021
      • Roadmap
  • For IBM DB2
    • Introduction
    • Getting Started (LEGACY)
      • Using SnowConvert
      • Review Results
        • Output
        • Reports
    • Command Line Interface
    • Translation Reference
    • Issues and Troubleshooting
      • MSCEWI5001
      • MSCEWI5002
      • MSCEWI5003
      • MSCEWI5004
      • MSCEWI5005
      • MSCEWI5006
      • MSCEWI5007
      • MSCEWI5008
      • MSCEWI5009
      • MSCEWI5010
      • MSCEWI5011
      • MSCEWI5012
      • MSCEWI5013
      • MSCEWI5014
      • MSCEWI5015
      • MSCEWI5016
      • MSCEWI5017
      • MSCEWI5018
      • MSCEWI5019
      • MSCEWI5020
      • MSCEWI5021
      • MSCEWI5022
    • Release Notes
      • 2022
  • For PostgreSQL
    • Introduction
    • Getting Started (LEGACY)
      • Using SnowConvert
      • Review Results
        • Output
        • Reports
    • Command Line Interface
    • Translation Reference
    • Issues and Troubleshooting
      • MSC-PG0000
      • MSC-PG0001
      • MSC-PG0002
      • MSC-PG0003
      • MSC-PG0004
      • MSC-PG0005
      • MSC-PG0006
      • MSC-PG0007
      • MSC-PG0008
      • MSC-PG0009
      • MSC-PG0010
      • MSC-PG0011
      • MSC-PG0012
      • MSC-PG0013
      • MSC-PG0014
      • MSC-PG0015
      • MSC-PG0016
      • MSC-PG0017
      • MSC-PG0018
      • MSC-PG0019
      • MSC-PG0020
      • MSC-PG0021
      • MSC-PG0022
      • MSC-PG0023
      • MSC-PG0024
      • MSC-PG0025
      • MSC-PG0026
      • MSC-PG0027
      • MSC-PG0028
    • Release Notes
      • 2022
  • For Greenplum
    • Introduction
    • Getting Started (LEGACY)
      • Using SnowConvert
      • Review Results
        • Output
        • Reports
    • Command Line Interface
    • Translation Reference
    • Issues and Troubleshooting
      • MSC-GP0000
      • MSC-GP0001
      • MSC-GP0002
      • MSC-GP0003
    • Release Notes
      • 2022
  • For Amazon RedShift
    • Introduction
    • Getting Started (LEGACY)
      • Using SnowConvert
      • Review Results
        • Output
        • Reports
    • Command Line Interface
    • Translation Reference
    • Issues and Troubleshooting
      • MSC-RS0004
      • MSC-RS0005
      • MSC-RS0011
      • MSC-RS0012
      • MSC-RS0013
      • MSC-RS0014
    • Release Notes
      • 2022
  • For Google BigQuery
    • Introduction
    • Getting Started (LEGACY)
      • Using SnowConvert
      • Review Results
        • Output
        • Reports
    • Command Line Interface
    • Translation Reference
    • Issues and Troubleshooting
      • General Issues
      • MSC-BQ0001
      • MSC-BQ0002
      • MSC-BQ0003
      • MSC-BQ0004
      • MSC-BQ0005
      • MSC-BQ0006
      • MSC-BQ0007
      • MSC-BQ0008
      • MSC-BQ0009
      • MSC-BQ0010
      • MSC-BQ0011
      • MSC-BQ0012
      • MSC-BQ0013
      • MSC-BQ0014
      • MSC-BQ0015
      • MSC-BQ0016
    • Release Notes
      • 2022
  • For Apache Hive
    • Introduction
    • Getting Started (LEGACY)
      • Using SnowConvert
      • Review Results
        • Output
        • Reports
    • Command Line Interface
    • Translation Reference
    • Issues and Troubleshooting
    • Release Notes
      • 2022
  • For Vertica
    • Introduction
    • Getting Started (LEGACY)
      • Using SnowConvert
      • Review Results
        • Output
        • Reports
    • Command Line Interface
    • Translation Reference
    • Issues and Troubleshooting
    • Release Notes
      • 2022
  • for Spark (Scala)
    • Snowpark Migration Accelerator for Spark Scala
  • FOR SPARK (PYTHON)
    • Snowpark Migration Accelerator for PySpark
  • Databricks workloads
    • Getting started
      • DBC files explode
Powered by GitBook
On this page
  • Severity
  • Summary
  • UDFs Location
  • DATE_TO_INT_UDF
  • Code Example
  • TIMESTAMP_DIFFERENCE UDF
  • 1-Differences between Teradata and Snowflake date time subtraction
  • 2-Why is UDF used to date time subtraction?
  • Warning
  • Code Sample
  • JSON_REGEX_QUERY UDF
  • Code Sample
  • Differences between Teradata JSON Entity Reference (dot notation ) and Snowflake JSON query method.
  • Why is this UDF used to extract JSON data?
  • EXTRACT_FROM_INTERVAL UDF
  • Code Sample
  • Differences between Teradata and Snowflake date-time extraction
  • Why is this UDF used to extract from interval?
  • IS_FOUND_UDF
  • Recommendations
  1. General (Beta)
  2. General Issues and Troubleshooting
  3. Conversion Issues

MSCEWI1020

CUSTOM UDF INSERTED.

PreviousMSCEWI1019NextMSCEWI1021

Last updated 1 year ago

This is a deprecated version of the SnowConvert documentation, please visit the official site .

Severity

Low

Summary

There are several User-Defined Functions (UDF) provided by SnowConvert used to reproduce source language behaviors that are not supported by Snowflake, functionality and descriptions are detailed below.

UDFs Location

UDFs can be found in "UDF Helpers" folder created in output path after migration has occurred.

DATE_TO_INT_UDF

When function is used to cast a DATE type to a NUMERIC type. Because of this behavior is not supported in Snowflake, Mobilize.Net provides an UDF Helpers file, which is used to emulate this cast behaviors in the migrated code.

Code Example

Input Code:

CREATE TABLE SAMPLE_TABLE
(
    VARCHAR_TYPE VARCHAR,
    CHAR_TYPE CHAR(11),
    INTEGER_TYPE INTEGER,
    DATE_TYPE DATE,
    TIMESTAMP_TYPE TIMESTAMP,
    TIME_TYPE TIME,
    PERIOD_TYPE PERIOD(DATE)
);

REPLACE VIEW SAMPLE_VIEW 
AS
SELECT
CAST(DATE_TYPE AS SMALLINT),
CAST(DATE_TYPE AS DECIMAL),
CAST(DATE_TYPE AS NUMBER),
CAST(DATE_TYPE AS FLOAT),
CAST(DATE_TYPE AS INTEGER)
FROM SAMPLE_TABLE;

Output Code:

CREATE TABLE PUBLIC.SAMPLE_TABLE
(
    VARCHAR_TYPE VARCHAR,
    CHAR_TYPE CHAR(11),
    INTEGER_TYPE INTEGER,
    DATE_TYPE DATE,
    TIMESTAMP_TYPE TIMESTAMP,
    TIME_TYPE TIME,
    PERIOD_TYPE VARCHAR(24) COMMENT 'PERIOD(DATE)' /*** MSC-WARNING - MSCEWI1036 - PERIOD DATA TYPE "PERIOD(DATE)" CONVERTED TO VARCHAR ***/
);

CREATE OR REPLACE VIEW PUBLIC.SAMPLE_VIEW
AS
SELECT
PUBLIC.DATE_TO_INT_UDF(DATE_TYPE) /*** MSC-WARNING - MSCEWI2026 - CUSTOM UDF 'DATE_TO_INT_UDF' INSERTED. ***/,
PUBLIC.DATE_TO_INT_UDF(DATE_TYPE) /*** MSC-WARNING - MSCEWI2026 - CUSTOM UDF 'DATE_TO_INT_UDF' INSERTED. ***/,
PUBLIC.DATE_TO_INT_UDF(DATE_TYPE) /*** MSC-WARNING - MSCEWI2026 - CUSTOM UDF 'DATE_TO_INT_UDF' INSERTED. ***/,
PUBLIC.DATE_TO_INT_UDF(DATE_TYPE) /*** MSC-WARNING - MSCEWI2026 - CUSTOM UDF 'DATE_TO_INT_UDF' INSERTED. ***/,
PUBLIC.DATE_TO_INT_UDF(DATE_TYPE) /*** MSC-WARNING - MSCEWI2026 - CUSTOM UDF 'DATE_TO_INT_UDF' INSERTED. ***/
FROM PUBLIC.SAMPLE_TABLE;

TIMESTAMP_DIFFERENCE UDF

1-Differences between Teradata and Snowflake date time subtraction

Teradata and Snowflake handle date time subtraction different, the syntax, returned type and precision are different.

2-Why is UDF used to date time subtraction?

Due to the differences mentioned above, it is necessary to use an UDF. When SnowConvert migrates a create table like the following

create table ftable21( col1 interval day(4));

The output of the given input is

CREATE TABLE db1.PUBLIC.ftable21 (
col1 VARCHAR(20) COMMENT 'interval day(4)' /*** MSC-WARNING - MSCEWI1036 - INTERVAL DATA TYPE "interval day(4)" CONVERTED TO VARCHAR ***/);

The UDF will return a VARCHAR equivalent to Teradata's interval.

Warning

Some operations may produce different day outputs with an error range of 1 unit.

Code Sample

Input Code:

select start_ts,end_ts, start_ts - end_ts second(4) from DB1.dummy_ts order by start_ts;

Output Code:

SELECT start_ts,
end_ts,
/*** MSC-WARNING - MSCEWI1020 - CUSTOM UDF 'TIMESTAMP_DIFFERENCE' INSERTED. ***/
PUBLIC.TIMESTAMP_DIFFERENCE( start_ts, end_ts, 'SECOND')
FROM DB1.PUBLIC.dummy_ts order by start_ts;

JSON_REGEX_QUERY UDF

UDF Signature

FUNCTION PUBLIC.JSON_REGEX_QUERY_UDF(JSON_DATA VARIANT, REGEX_PATH VARCHAR)
RETURNS VARIANT
  • JSON_DATA : Variant data.

  • REGEX_PATH: Regular expression literal to filter the variant data.

  • RETURN: The filtered JSON data.

Code Sample

Input Code:

SELECT CAST(FORMULA AS JSON(2000))..name FROM variantTest;

SELECT js.jsonColumn..schools[0,name,location].*[0:20:5] from TABLEJ js

Output Code:

SELECT
--** MSC-WARNING - MSCEWI1020 - CUSTOM UDF 'JSON_REGEX_QUERY_UDF' INSERTED. **
PUBLIC.JSON_REGEX_QUERY_UDF( CAST(FORMULA AS VARIANT), '.*name')
FROM DATAWAREHOUSE.PUBLIC.variantTest;

SELECT
--** MSC-WARNING - MSCEWI1020 - CUSTOM UDF 'JSON_REGEX_QUERY_UDF' INSERTED. **
PUBLIC.JSON_REGEX_QUERY_UDF( jsonColumn, '.*schools(\\[(0)\\]|(name|location))(\\[\\d+\\]|\\.\\w+)\\[(0|5|10|15)\\]')
FROM DATAWAREHOUSE.PUBLIC.TABLEJ js;

Differences between Teradata JSON Entity Reference (dot notation ) and Snowflake JSON query method.

Teradata and Snowflake differ in the methods used for traverse JSON data. In this case Teradata use a way based on JavaScript that use dot notation, array indexing, and other especial operators like wildcard access or double dot. On the other hand, snowflake doesn't support these operators, and it only can access members and arrays.

Why is this UDF used to extract JSON data?

Because Snowflake does not handle JSON dot notation, so to this UDF comes to simulate the Teradata JSON notation, that have some complex operators and array indexing for example the recursive descent operator.

EXTRACT_FROM_INTERVAL UDF

This UDF is used to handle scenarios when there is an extract date-time part from an interval.

UDF Signature

FUNCTION PUBLIC.EXTRACT_FROM_INTERVAL_UDF
(
  INTERVAL_DATA VARCHAR,
  INPUT_PART VARCHAR, 
  REQUEST_PART VARCHAR
 )
RETURNS NUMBER
  • INTERVAL_DATA: Formatted varchar returned by TIMESTRAMP_DIFERENCE UDF.

  • INPUT_PART: Formatted varchar, is the original requested part (same as TIMESTAMP_DIFERENCE INPUT_PART) and must be one of these:

    • 'DAY TO HOUR'

    • 'DAT TO MINUTE'

    • 'DAY TO SECOND'

    • 'DAY TO MINUTE'

    • 'HOUR TO MINUTE'

    • 'HOUR TO SECOND'

    • 'MINUTE TO SECOND'

  • REQUEST_PART: Value to be extracted, the request part should be contained in the input part interval, must be 'DAY', 'HOUR', 'MINUTE' or 'SECOND'.

  • RETURN: The extracted value of data type number.

Code Sample

Input Code:

select start_ts,end_ts, extract(day from ((start_ts - end_ts) day(4) to hour)) from DB1.dummy_ts order by start_ts;

select start_ts,end_ts, extract(MINUTE from ((start_ts - end_ts) day(4) to second)) from DB1.dummy_ts order by start_ts; 

SELECT EXTRACT (MINUTE FROM '23:50:17.3');

Output Code:

SELECT
start_ts,
end_ts,
/*** MSC-WARNING - MSCEWI1020 - CUSTOM UDF 'EXTRACT_FROM_INTERVAL_UDF' INSERTED. ***/
PUBLIC.EXTRACT_FROM_INTERVAL_UDF( (/*** MSC-WARNING - MSCEWI1020 - CUSTOM UDF 'TIMESTAMP_DIFFERENCE_UDF' INSERTED. ***/
PUBLIC.TIMESTAMP_DIFFERENCE_UDF(start_ts, end_ts, 'DAY TO HOUR')), 'DAY TO HOUR', 'DAY')
FROM DB1.PUBLIC.dummy_ts order by start_ts;

SELECT
start_ts,
end_ts,
/*** MSC-WARNING - MSCEWI1020 - CUSTOM UDF 'EXTRACT_FROM_INTERVAL_UDF' INSERTED. ***/
PUBLIC.EXTRACT_FROM_INTERVAL_UDF( (/*** MSC-WARNING - MSCEWI1020 - CUSTOM UDF 'TIMESTAMP_DIFFERENCE_UDF' INSERTED. ***/
PUBLIC.TIMESTAMP_DIFFERENCE_UDF(start_ts, end_ts, 'DAY TO SECOND')), 'DAY TO SECOND', 'MINUTE')
FROM DB1.PUBLIC.dummy_ts order by start_ts;

SELECT
EXTRACT (MINUTE FROM '23:50:17.3');

Differences between Teradata and Snowflake date-time extraction

Teradata and Snowflake differ in the parameters that each function respectively might receive and the return type.

  • Return type: Teradata EXTRACT function returns an integer or decimal(8, 2) value representing the part requested and Snowflake returns a number value representing a date-time of the part requested.

Teradata and Snowflake differ in the parameters that each function respectively might receive and the return type.

Why is this UDF used to extract from interval?

Because Snowflake does not handle intervals, it only supports dates and times. So this UDF comes to complement the Snowflake function EXTRACT.

IS_FOUND_UDF

This UDF is used to indicate if the last ran query returned any rows, if the last executed query returned 0 rows returns FALSE, if the last executed query returned 1 or more rows returns TRUE.

UDF Signature

CREATE OR REPLACE FUNCTION IS_FOUND_UDF() 
RETURNS BOOLEAN
  • RETURN: Boolean value indicating if the last query ran returned any rows.

Input Code:

IF FOUND THEN

Output Code:

--** MSC-WARNING - MSCEWI1020 - CUSTOM UDF 'IS_FOUND_UDF' INSERTED. **
IF (IS_FOUND_UDF()) THEN

Recommendations

  • Check if the UDF Helpers folder is being created with files inside it.

Syntax: The syntax used to handle DATE, TIMESTAMP and TIME subtraction operation in Teradata is with minus sign and interval used to specify the precision and format of operation result. For further details of syntax visit the following link . In Snowflake subtraction of DATE, TIMESTAMP and TIME are handled by three different functions, DATEDIFF, TIMESTAMPDIFF, and TIMEDIFF respectively, these operations takes 3 parameters, the dates, and the date part to be returned. Nevertheless, DATEDIFF function will work with TIMESTAMP and TIME types The minus sign can be used if the operation is with DATE type, in this case, the default return type is the number of days.

Return Type: In general the returned data type of Teradata are a different kind of Intervals. Intervals reference can be found at . The data type returned by Snowflake when one of the functions named above is called is Integer representing the number of units.

Rounding: To see when DATEDIFF (used in some cases UDF) uses the entire date or if it disregards of other parts in Snowflake visit the following link . This point could give different output than Teradata's

This UDF is used to extract information of a snowflake variant object, just like in Teradata with (dot notation), but with regular expression instead.

Consider the warning described in the when extracting day from the interval.

Parameters: The main difference between Teradata and Snowflake extract function is that Snowflake does not handle intervals, it only supports dates and times. For further information on this, read and .

If you need more support, you can email us at

HERE
CAST
https://docs.teradata.com/r/w19R4KsuHIiEqyxz0WYfgA/7kLLsWrP0kHxbk3iida0mA
https://www.docs.teradata.com/r/T5QsmcznbJo1bHmZT2KnFw/z~5iW7rYVstcmNYbd6Dsjg
https://docs.snowflake.com/en/sql-reference/functions/datediff.html
https://docs.snowflake.com/en/sql-reference/functions/datediff.html#usage-notes
JSON Entity Reference
EWI warning
Snowflake's EXTRACT function documentation
Teradata's EXTRACT function documentation
snowconvert-support@snowflake.com