> ## Documentation Index
> Fetch the complete documentation index at: https://docs.firebolt.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Data types

> Snowflake data types and their support in Snowflake compatibility mode.

<span className="feature-tag">Preview</span>

Snowflake [data types](https://docs.snowflake.com/en/sql-reference-data-types) in [Snowflake compatibility mode](/reference-sql/snowflake/overview). A supported type name can be written as-is in casts and column definitions.

| Snowflake type                                                                                                                      | Support          | Notes                                                                                                                                                |
| :---------------------------------------------------------------------------------------------------------------------------------- | :--------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`NUMBER`, `NUMBER(p, s)`](https://docs.snowflake.com/en/sql-reference/data-types-numeric)                                          | Supported        | Defaults to `NUMBER(38, 0)`. Declared precision and scale are honored.                                                                               |
| [`DECIMAL`, `NUMERIC`](https://docs.snowflake.com/en/sql-reference/data-types-numeric)                                              | Supported        | Synonyms for `NUMBER`.                                                                                                                               |
| [`INT`, `INTEGER`, `BIGINT`, `SMALLINT`, `TINYINT`, `BYTEINT`](https://docs.snowflake.com/en/sql-reference/data-types-numeric)      | Supported        |                                                                                                                                                      |
| [`FLOAT`, `FLOAT4`, `FLOAT8`, `DOUBLE`, `DOUBLE PRECISION`, `REAL`](https://docs.snowflake.com/en/sql-reference/data-types-numeric) | Supported        |                                                                                                                                                      |
| [`VARCHAR`, `VARCHAR(n)`, `STRING`, `TEXT`, `CHAR`, `CHARACTER`](https://docs.snowflake.com/en/sql-reference/data-types-text)       | Supported        | A declared length is accepted and not enforced. `CHAR` is not blank-padded.                                                                          |
| [`BINARY`, `VARBINARY`](https://docs.snowflake.com/en/sql-reference/data-types-text)                                                | Supported        |                                                                                                                                                      |
| [`BOOLEAN`](https://docs.snowflake.com/en/sql-reference/data-types-logical)                                                         | Supported        |                                                                                                                                                      |
| [`DATE`](https://docs.snowflake.com/en/sql-reference/data-types-datetime)                                                           | Supported        |                                                                                                                                                      |
| [`TIMESTAMP`, `TIMESTAMP_NTZ`, `DATETIME`](https://docs.snowflake.com/en/sql-reference/data-types-datetime)                         | Supported        |                                                                                                                                                      |
| [`TIMESTAMP_LTZ`, `TIMESTAMP_TZ`](https://docs.snowflake.com/en/sql-reference/data-types-datetime)                                  | Supported        | Both are stored as the same absolute instant. The original offset is not retained for display, so a `TIMESTAMP_TZ` renders in the session time zone. |
| [`TIME`](https://docs.snowflake.com/en/sql-reference/data-types-datetime)                                                           | Not supported    | A time of day with no date is not supported. Store it in a `TIMESTAMP`, or as seconds since midnight.                                                |
| [`ARRAY`](https://docs.snowflake.com/en/sql-reference/data-types-semistructured)                                                    | With limitations | Arrays are typed, so an untyped `ARRAY` holds text rather than `VARIANT`. Declare an element type, such as `ARRAY(INT)`, for anything narrower.      |
| [`VARIANT`, `OBJECT`](https://docs.snowflake.com/en/sql-reference/data-types-semistructured)                                        | Not supported    | Semi-structured values are held as text; see [Limitations](#limitations).                                                                            |
| [`GEOGRAPHY`](https://docs.snowflake.com/en/sql-reference/data-types-geospatial)                                                    | Supported        | Stored, but no `ST_*` function is available; see [Geospatial functions](/reference-sql/snowflake/functions/geospatial).                              |
| [`GEOMETRY`](https://docs.snowflake.com/en/sql-reference/data-types-geospatial)                                                     | Not supported    | Planar geometry is not supported, only spheroidal geography.                                                                                         |
| [`VECTOR`](https://docs.snowflake.com/en/sql-reference/data-types-vector)                                                           | Not supported    |                                                                                                                                                      |

## Limitations

Because `VARIANT` and `OBJECT` columns cannot be declared, a table holding semi-structured data uses `TEXT` and parses on read:

```sql theme={"theme":{"light":"css-variables","dark":"css-variables"}}
CREATE TABLE events (id INT, payload TEXT);

SELECT payload:user.id::INT AS user_id
FROM events;
```

The `:` path operator, `::` casts and the JSON accessor functions all work against a `TEXT` column, so a query written against a `VARIANT` column usually needs only the column definition changed. See [Semi-structured functions](/reference-sql/snowflake/functions/semi-structured) for where results still differ.
