> ## 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 | See [Geospatial functions](/reference-sql/snowflake/functions/geospatial) for the `ST_*` functions and the rendering differences. |
| [`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.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.