How each source column type lands in Snowflake. Most types have a direct Snowflake
equivalent. A few don’t, and those are kept as text so no value is rounded,
shifted or lost; they are marked as text below.
Change a type per column on the task’s Schema tab.
The tables below are the defaults a new task starts with.
A type that isn’t listed lands as VARCHAR.
Timestamps with a time zone land as TIMESTAMP_TZ, in UTC.
JSON lands as VARIANT, so you query fields directly with
"COL":field, no PARSE_JSON needed.
Files and REST APIs have no declared column types. Types are detected from a sample
and can be reviewed before the first load: see
Files and REST API.
SQL Server
Source type
Snowflake type
Notes
Numbers
tinyint, smallint, int, bigint
NUMBER
decimal, numeric, money, smallmoney
NUMBER(38,10)
real, float
FLOAT
bit
BOOLEAN
Text
char, varchar, nchar, nvarchar, text, ntext
VARCHAR
JSON stored in nvarchar stays VARCHAR; SQL Server has no JSON column type. Use PARSE_JSON, or change the column to VARIANT on the Schema tab.
uniqueidentifier
VARCHAR
xml
VARCHARas text
hierarchyid
VARCHARas text
The path form, for example /1/3/.
sql_variant
VARCHARas text
Dates and times
date
DATE
time
TIME
Full 100-nanosecond precision.
datetime, datetime2, smalldatetime
TIMESTAMP_NTZ
datetimeoffset
TIMESTAMP_TZ
Spatial
geometry
GEOMETRY
Planar.
geography
GEOGRAPHY
Latitude and longitude.
Binary
binary, varbinary, image
BINARY
timestamp / rowversion
BINARY
A row version number, not a date.
PostgreSQL
Source type
Snowflake type
Notes
Numbers
smallint, integer, bigint, serial types
NUMBER
numeric, decimal
NUMBER(38,10)
Read as text, so values beyond 28 digits aren’t rounded on the way in.
money
NUMBER(38,10)
real, double precision
FLOAT
boolean
BOOLEAN
oid
NUMBER(10,0)
Text
text, varchar, char
VARCHAR
uuid
VARCHAR
xml
VARCHARas text
Dates and times
date
DATE
time
TIME
time with time zone
VARCHARas text
For example 14:30:00+05:30. Snowflake has no time-of-day type with a time zone.
timestamp
TIMESTAMP_NTZ
timestamp with time zone
TIMESTAMP_TZ
interval
VARCHARas text
For example 1 year 2 mons 3 days 04:05:06. Months and years have no fixed length, so the interval is kept as written.
Structured
json, jsonb
VARIANT
Any array, such as integer[] or text[]
VARIANT
Query elements with "COL"[0].
Range types: int4range, int8range, numrange, daterange, tsrange, tstzrange
MySQL time is a duration and can be negative or longer than 24 hours, which Snowflake TIME can’t hold.
Structured
json
VARIANT
MariaDB stores JSON as longtext, so on MariaDB it lands as VARCHAR.
Spatial
geometry, point, linestring, polygon and their multi and collection types
GEOMETRY
Binary
binary, varbinary, blob types
BINARY
Oracle
Source type
Snowflake type
Notes
Numbers
NUMBER(p,s)
NUMBER(p,s)
Precision above 28 lands as NUMBER(38,s), with the scale capped at 10. A negative scale lands as scale 0.
NUMBER with no precision
VARCHARas text
It can hold more digits than Snowflake NUMBER, so the exact value is kept as text. Declare a precision, or change the column on the Schema tab, if you know the range.
FLOAT
VARCHARas text
Oracle FLOAT is a decimal type with up to 126 binary digits; kept exact for the same reason.