This topic lists the data types available in Firebolt.
- Date and timestamp
A whole number ranging from -2,147,483,648 to 2,147,483,647.
INTEGER data types require 4 bytes of storage. Synonyms:
An exact numeric data type defined by its precision (total number of digits) and scale (number of digits to the right of the decimal point). For more information, see NUMERIC data type. Synonyms:
A whole number ranging from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807.
BIGINT data types require 8 bytes of storage. Synonyms:
A floating-point number that has six decimal-digit precision. Decimal (fixed point) types are not supported.
REAL data types require 4 bytes of storage. Synonyms:
A floating-point number that has 15 decimal-digit precision. Decimal (fixed point) types are not supported.
DOUBLE data types require 8 bytes. Synonyms:
FLOAT(p) where 25 <= p <= 53.
A string of an arbitrary length that can contain any number of bytes, including null bytes. Useful for arbitrary-length string columns. Firebolt supports UTF-8 escape sequences. Synonyms:
Date and timestamp
You are looking at the documentation for Firebolt’s redesigned date and timestamp types. These types were introduced in DB version 3.19 under the names
TIMESTAMPTZ, and synonyms
TIMESTAMPTZmade available in DB version 3.22.
If you worked with Firebolt before DB version 3.22, you might still be using the legacy date and timestamp types. Determine which types you are using by executing the query
SELECT EXTRACT(CENTURY FROM DATE '2023-03-16');. If this query returns a result, you are using the redesigned date and timestamp types and can continue with this documentation. If this query returns an error, you are using the legacy date and timestamp types and can find legacy documentation here, or instructions to reingest your data to use the new types here.
Firebolt supports three date and timestamp data types:
| ||4 bytes|| || ||1 day|
| ||8 bytes|| || ||1 microsecond|
| ||8 bytes|| || ||1 microsecond|
Dates are counted according to the proleptic Gregorian calendar. Each year consists of 365 days, with leap days added to February in leap years.
A year, month, and day calendar date independent of a time zone. For more information, see DATE data type.
A year, month, day, hour, minute, second, and microsecond timestamp independent of a time zone. For more information, see TIMESTAMP data type.
A year, month, day, hour, minute, second, and microsecond timestamp associated with a time zone. For more information, see TIMESTAMPTZ data type.
Represents boolean value of
Represents an array of values. All elements of the array must have same data type. Elements of the array can be of any supported data type including nested arrays (array with arrays).
Array columns must be defined with the data type of the array elements, and optionally whether or not those elements are nullable. The following syntax options are supported:
ARRAY(<data-type> [NULL | NOT NULL])
For example, the following three queries will create tables with the same nullable
demo_array column of
CREATE DIMENSION TABLE demo1 ( demo_array ARRAY(TEXT NULL) ); CREATE DIMENSION TABLE demo2 ( demo_array TEXT ); CREATE DIMENSION TABLE demo3 ( demo_array TEXT ARRAY );
You can also specify that an array be NOT NULL, but you must then use the
ARRAY(<data-type> NOT NULL) syntax.
CREATE TABLE statement shows arrays of different element types and different nullabilities.
CREATE DIMENSION TABLE demo ( a_t ARRAY(TEXT NULL) NULL, a_i ARRAY(INT NULL) NOT NULL, a_d ARRAY(DATE NOT NULL) NULL, a_f ARRAY(FLOAT NOT NULL) NOT NULL, a_a ARRAY(ARRAY(INT NULL) NULL) NULL );
And the following
INSERT INTO statement demonstrates examples of values for these arrays:
INSERT INTO demo VALUES ( ['Hello', NULL, 'world'], [1, 42, NULL], [DATE '2000-01-01'], [3.14, 2.71, 9.8], [ [1, 2], [NULL], NULL] ), ( NULL, , NULL, , NULL )
Represents variable size binary data. A binary string is a sequence of bytes - unlike TEXT, there is no character set. The
BYTEA data type is nullable. For more information, see BYTEA data type.