PG
PRO

Type Reference

PostgreSQL data types with SQLite and MariaDB equivalents, storage sizes, cast chains, and a use-case guide.

How to read this table: Each row is a PostgreSQL type. The SQLite and MariaDB columns show the closest equivalent — means there is no native equivalent and you would typically use TEXT or a workaround. Size is per row stored on disk. Use the search box to filter by type name, keyword (e.g. "json", "date"), or size.

Integer

PostgreSQLSQLiteMariaDBSizeNotes / Range
SMALLINTINTEGERSMALLINT2 bytes-32,768 to 32,767
INTEGER / INTINTEGERINT4 bytes-2,147,483,648 to 2,147,483,647
BIGINTINTEGERBIGINT8 bytes-9.2 × 10¹⁸ to 9.2 × 10¹⁸
SERIALINTEGERINT AUTO_INCREMENT4 bytes1 to 2,147,483,647
BIGSERIALINTEGERBIGINT AUTO_INCREMENT8 bytes1 to 9.2 × 10¹⁸
OID4 bytes0 to 4,294,967,295

Float

PostgreSQLSQLiteMariaDBSizeNotes / Range
REALREALFLOAT4 bytes~6 decimal digits
DOUBLE PRECISIONREALDOUBLE8 bytes~15 decimal digits
NUMERIC(p,s)NUMERICDECIMAL(p,s)variableup to 131,072 digits

Text

PostgreSQLSQLiteMariaDBSizeNotes / Range
TEXTTEXTLONGTEXTvariableunlimited
VARCHAR(n)TEXTVARCHAR(n)variableup to 1 GB
CHAR(n)TEXTCHAR(n)fixed nup to 1 GB
TSVECTORTEXTvariablePG only
TSQUERYTEXTvariablePG only

Bit

PostgreSQLSQLiteMariaDBSizeNotes / Range
BIT(n)BIT(n)n bitsn bits wide
VARBIT / BIT VARYINGBIT(64)variableup to 83,886,080 bits

Boolean

PostgreSQLSQLiteMariaDBSizeNotes / Range
BOOLEANINTEGER (0/1)TINYINT(1)1 bytetrue / false / NULL

Date/Time

PostgreSQLSQLiteMariaDBSizeNotes / Range
DATETEXT / INTEGERDATE4 bytes4713 BC to 5874897 AD
TIMETEXTTIME8 bytes00:00:00 to 24:00:00
TIMESTAMPTEXT / INTEGERDATETIME8 bytes4713 BC to 294276 AD
TIMESTAMPTZINTEGER (epoch)TIMESTAMP8 bytes4713 BC to 294276 AD
INTERVAL16 bytes-178,000,000 to 178,000,000 years

Range

PostgreSQLSQLiteMariaDBSizeNotes / Range
INT4RANGEvariablePG only
INT8RANGEvariablePG only
NUMRANGEvariablePG only
TSRANGEvariablePG only
TSTZRANGEvariablePG only
DATERANGEvariablePG only

Binary

PostgreSQLSQLiteMariaDBSizeNotes / Range
BYTEABLOBBLOB / LONGBLOBvariableup to 1 GB

JSON

PostgreSQLSQLiteMariaDBSizeNotes / Range
JSONTEXTJSON (TEXT alias)variableup to 1 GB
JSONBTEXTvariablePG only

Array

PostgreSQLSQLiteMariaDBSizeNotes / Range
INTEGER[]variablePG only

UUID

PostgreSQLSQLiteMariaDBSizeNotes / Range
UUIDTEXTCHAR(36)16 bytes122 bits of randomness

Network

PostgreSQLSQLiteMariaDBSizeNotes / Range
INETTEXTVARCHAR(45)7 or 19 bytesPG only
CIDRTEXTVARCHAR(43)7 or 19 bytesPG only
MACADDRTEXT6 bytesPG only
MACADDR8TEXT8 bytesPG only

Misc

PostgreSQLSQLiteMariaDBSizeNotes / Range
XMLTEXTLONGTEXTvariablePG only
MONEYNUMERICDECIMAL(19,4)8 bytes~±92 trillion
ENUMTEXT + CHECKENUM(…)4 bytesup to 8,388,607 labels
POINTPOINT (spatial)16 bytesfloat8 coordinates
pg_lsn8 bytesPG internal