Data Types
This section shows equivalents between data types in Teradata and in Snowflake.
Conversion Table
ARRAY
ARRAY
BIGINT
BIGINT
BLOB
BINARY
BYTE
BINARY
BYTEINT
BYTEINT
CHAR
CHAR
CLOB
VARCHAR
DATE
DATE
DECIMAL
DECIMAL
DOUBLE PRECISION
DOUBLE PRECISION
FLOAT
FLOAT
INTEGER
INTEGER
INTERVAL DAY [TO HOUR | MINUTE | SECOND]
VARCHAR(20)
INTERVAL HOUR [TO MINUTE | SECOND]
VARCHAR(20)
INTERVAL MINUTE [TO SECOND]
VARCHAR(20)
INTERVAL SECOND
VARCHAR(20)
INTERVAL YEAR [TO SECOND]
VARCHAR(20)
JSON
VARIANT
MBR
---
Not supported
NUMBER
NUMBER(38, 18)
PERIOD(DATE)
VARCHAR(24)
PERIOD(TIME)
VARCHAR(34)
PERIOD(TIME WITH TIME ZONE)
VARCHAR(46)
PERIOD(TIMESTAMP)
VARCHAR(58)
PERIOD(TIMESTAMP WITH TIME ZONE)
VARCHAR(58)
REAL
REAL
SMALLINT
SMALLINT
ST_GEOMETRY
GEOGRAPHY
TIME
TIME
TIME WITH TIME ZONE
TIME
TIMESTAMP
TIMESTAMP
TIMESTAMP WITH TIME ZONE
TIMESTAMP_TZ
VARBYTE
BINARY
VARCHAR
VARCHAR
XML
VARIANT
Notes
See the documentation on Teradata data types
Integer Data Types
For the conversion of integer data types (INTEGER
, SMALLINT
, and BIGINT
), each one is converted to the alias in Snowflake with the same name. Each of those aliases converts to NUMBER(38,0)
, a data type that is considerably larger than the integer datatype. Below is a comparison of the range of values that can be present in each data type:
Teradata
INTEGER
: -2,147,483,648 to 2,147,483,647Teradata
SMALLINT
: -32768 to 32767Teradata
BIGINT
: -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807Snowflake
NUMBER(38,0)
: -99999999999999999999999999999999999999 to +99999999999999999999999999999999999999
Warning SSC-EWI-0036 is generated.
Interval/Period Data Types
Intervals and Periods are stored as a string (VARCHAR
) in Snowflake. When converting, SnowConvert creates a UDF that recreates the same expression as a string. Warning SSC-EWI-TD0053 is generated.
You can see more of the UDF's in the public repository of UDF's currently created by Snowflake SnowConvert.
These UDF's assume that periods are stored in a VARCHAR
where the data/time parts are separated by an *
. For example for a Teradata period like PERIOD('2018-01-01','2018-01-20')
it should be stored in Snowflake as a VARCHAR
like '2018-01-01
*2018-01-20'
.
The only exception to the VARCHAR
transformation for intervals are interval literals used to add/subtract values from a Datetime expression, Snowflake does not have an INTERVAL
datatype but interval constants exist for the specific purpose mentioned. Examples:
Input code:
Output code:
Cases where the interval is being multiplied/divided by a numerical expression are transformed to equivalent DATEADD
function calls instead:
Input code:
Output code:
JSON Data Type
Elements inside a JSON are ordered by their keys when inserted in a table. Thus, the query results might differ. However, this does not affect the order of arrays inside the JSON.
For example, if the original JSON is:
Using the Snowflake PARSE_JSON() that interprets an input string as a JSON document, producing a VARIANT value. The inserted JSON will be:
Note how "age" is now the first element. However, the array of "cities" maintains its original order.
Known Issues
No issues were found.
Related EWIs
No related EWIs.
Last updated