# BIGINT Data Type

An 8-byte integer data type used in `CREATE TABLE`

and `ALTER TABLE`

statements.

**Syntax:**

In the column definition of a `CREATE TABLE`

statement:

`column_name` BIGINT

**Range:** -9223372036854775808 .. 9223372036854775807. There is no `UNSIGNED`

subtype.

**Conversions:** Impala automatically converts to a floating-point type (`FLOAT`

or
`DOUBLE`

) automatically. Use `CAST()`

to convert to `TINYINT`

,
`SMALLINT`

, `INT`

, `STRING`

, or `TIMESTAMP`

.
Casting an integer or floating-point value `N`

to
`TIMESTAMP`

produces a value that is `N`

seconds past the start of the epoch
date (January 1, 1970). By default, the result value represents a date and time in the UTC time zone.
If the setting `-use_local_tz_for_unix_timestamp_conversions=true`

is in effect,
the resulting `TIMESTAMP`

represents a date and time in the local time zone.

**Examples:**

```
CREATE TABLE t1 (x BIGINT);
SELECT CAST(1000 AS BIGINT);
```

**Usage notes:**

`BIGINT`

is a convenient type to use for column declarations because you can use any kind of
integer values in `INSERT`

statements and they are promoted to `BIGINT`

where
necessary. However, `BIGINT`

also requires the most bytes of any integer type on disk and in
memory, meaning your queries are not as efficient and scalable as possible if you overuse this type.
Therefore, prefer to use the smallest integer type with sufficient range to hold all input values, and
`CAST()`

when necessary to the appropriate type.

For a convenient and automated way to check the bounds of the `BIGINT`

type, call the
functions `MIN_BIGINT()`

and `MAX_BIGINT()`

.

If an integer value is too large to be represented as a `BIGINT`

, use a
`DECIMAL`

instead with sufficient digits of precision.

**NULL considerations:** Casting any non-numeric value to this type produces a `NULL`

value.

**Partitioning:** Prefer to use this type for a partition key column. Impala can process the numeric
type more efficiently than a `STRING`

representation of the value.

**HBase considerations:** This data type is fully compatible with HBase tables.

**Text table considerations:** Values of this type are potentially larger in text tables than in tables
using Parquet or other binary formats.

**Internal details:** Represented in memory as an 8-byte value.

**Added in:** Available in all versions of Impala.

**Column statistics considerations:** Because this type has a fixed size, the maximum and average size
fields are always filled in for column statistics, even before you run the `COMPUTE STATS`

statement.

**Sqoop considerations:**

If you use Sqoop to
convert RDBMS data to Parquet, be careful with interpreting any
resulting values from `DATE`

, `DATETIME`

,
or `TIMESTAMP`

columns. The underlying values are
represented as the Parquet `INT64`

type, which is
represented as `BIGINT`

in the Impala table. The Parquet
values represent the time in milliseconds, while Impala interprets
`BIGINT`

as the time in seconds. Therefore, if you have
a `BIGINT`

column in a Parquet table that was imported
this way from Sqoop, divide the values by 1000 when interpreting as the
`TIMESTAMP`

type.

**Related information:**

Numeric Literals, TINYINT Data Type, SMALLINT Data Type, INT Data Type, BIGINT Data Type, DECIMAL Data Type (Impala 1.4 or higher only), Impala Mathematical Functions