- Qt 6.9
- Qt SQL
- Data Types for Qt-supported Database Systems
- Qt 6.9.3 Reference Documentation

SQL Database Drivers ◦ SQL Programming

# Data Types for Qt-supported Database Systems

## Recommended Data Types for Qt-Supported Database Systems

This table shows the recommended data types for extracting data from the databases supported in Qt. Note that types used in Qt are not necessarily valid as input types to a specific database system. e.g., A double might work perfectly as input for floating point records in a particular database, but not necessarily as a storage format for output from that database, because it would be stored with 64-bit precision in C++.

### IBM DB2 Data Types

IBM DB2 data type | SQL type description | Recommended input (C++ or Qt data type)
--- | --- | ---
SMALLINT | 16-bit signed integer | typedef qint16
INTEGER | 32-bit signed integer | typedef qint32
BIGINT | 64-bit signed integer | typedef qint64
REAL | 32-bit Single-precision floating point | typedef qreal
DOUBLE PRECISION | 64-bit Double-precision floating point | Mapped to QString for high precision doubles, otherwise qreal
FLOAT | 64-bit Double-precision floating point | typedef qreal
CHAR | Fixed-length, null-terminated character string | Mapped to QString
VARCHAR | Null-terminated varying length string | Mapped to QString
LONG VARCHAR | Not null-terminated varying length character string | Mapped to QString
BLOB | Not null-terminated varying binary string with 4-byte string length indicator | Mapped to QByteArray
CLOB | Character large string object | Mapped to QString
DATE | Null-terminated character string of the following format: yyyy-mm-dd | Mapped to QDate
TIME | Null-terminated character string of the following format: hh.mm.ss | Mapped to QTime
TIMESTAMP | Null-terminated character string of the following format: yyyy-mm-dd-hh.mm.ss.nnnnnn | Mapped to QDateTime

### Borland InterBase Data Types

Borland InterBase data type | SQL type description | Recommended input (C++ or Qt data type)
--- | --- | ---
BOOLEAN | Boolean | bool
TINYINT | 8 bit signed integer | typedef qint8
SMALLINT | 16-bit signed integer | typedef qint16
INTEGER | 32-bit signed integer | typedef qint32
BIGINT LONG | 64-bit signed integer | typedef qint64
REAL FLOAT | 32-bit floating point | typedef qreal
FLOAT | 64-bit floating point | typedef qreal
DOUBLE | 64-bit floating point | typedef qreal
DOUBLE PRECISION | 64-bit Double-precision floating point | Mapped to QString for high precision doubles, otherwise qreal
VARCHAR STRING | Character string, Unicode | Mapped to QString
CLOB | Character large string object | Mapped to QString
DATE | Displays date. Format: 'yyyy-mm-dd' | Mapped to QDate
TIME | Displays time. Format is 'hh:mm:ss' in 24-hour format | Mapped to QTime
TIMESTAMP | Displays a timestamp. Format is 'yyyy-mm-dd hh:mm:ss' | Mapped to QDateTime

### MySQL Data Types

MySQL data type | SQL type description | Recommended input (C++ or Qt data type)
--- | --- | ---
TINYINT | 8 bit signed integer | typedef qint8
TINYINT UNSIGNED | 8 bit unsigned integer | typedef quint8
SMALLINT | 16-bit signed integer | typedef qint16
SMALLINT UNSIGNED | 16-bit unsigned integer | typedef quint16
INT | 32-bit signed integer | typedef qint32
INT UNSIGNED | 32-bit unsigned integer | typedef quint32
BIGINT | 64-bit signed integer | typedef qint64
FLOAT | 32-bit Floating Point | typedef qreal
DOUBLE | 64-bit Floating Point | Mapped to QString for high precision doubles, otherwise qreal
CHAR | Character string | Mapped to QString
VARCHAR | Character string | Mapped to QString
TINYTEXT | Character string | Mapped to QString
TEXT | Character string | Mapped to QString
MEDIUMTEXT | Character string | Mapped to QString
LONGTEXT | Character string | Mapped to QString
CLOB | Character large string object | Mapped to QString
all BLOB types | BLOB | Mapped to QByteArray
DATE | Date without Time | Mapped to QDate
DATETIME | Date and Time | Mapped to QDateTime
TIMESTAMP | Date and Time | Mapped to QDateTime
TIME | Time | Mapped to QTime
YEAR | Year (int) | Mapped to QDateTime
ENUM | Enumeration of Value Set | Mapped to QString

### Oracle Call Interface Data Types

Oracle Call Interface data type | SQL type description | Recommended input (C++ or Qt data type)
--- | --- | ---
NUMBER | FLOAT, DOUBLE, PRECISIONc REAL | Mapped to QString for high precision doubles, otherwise qreal
NUMBER(38) | INTEGER INT SMALLINT | typedef qint8/16/32/64
NUMBER(p,s) | NUMERIC(p,s) DECIMAL(p,s)a | Mapped to QString
NVARCHAR2(n) | Character string (NATIONAL CHARACTER VARYING(n) NATIONAL CHAR VARYING(n) NCHAR VARYING(n)) | Mapped to QString
NCHAR(n) | Character string (NATIONAL CHARACTER(n) NATIONAL CHAR(n) NCHAR(n)) | Mapped to QString
CHAR(n) | Character string (CHARACTER(n) CHAR(n)) | Mapped to QString
CLOB | Character large string object | Mapped to QString
BLOB | A binary large object | Mapped to QByteArray
TIMESTAMP | Year, month, and day values of date, as well as hour, minute, and second values of time | Mapped to QDateTime

### ODBC Data Types

ODBC data type | SQL type description | Recommended input (C++ or Qt data type)
--- | --- | ---
BIT | Boolean | BOOL
TINYINT | 8 bit integer | typedef qint8
SMALLINT | 16-bit signed integer | typedef qint16
INTEGER | 32-bit signed integer | typedef qint32
BIGINT | 64-bit signed integer | typedef qint64
REAL | 32-bit Single-precision floating point | typedef qreal
FLOAT | 64-bit Double floating point | typedef qreal
DOUBLE | 64-bit Double floating point | Mapped to QString for high precision doubles, otherwise qreal
CHAR | Character string | Mapped to QString
VARCHAR | Character string | Mapped to QString
LONGVARCHAR | Character string | Mapped to QString
CLOB | Character large string object | Mapped to QString
DATE | Character string | Mapped to QDate
TIME | Character Time, Character string | Mapped to QTime
TIMESTAMP | Character Time, Character string | Mapped to QDateTime

### PostgreSQL Data Types

PostgreSQL data type | SQL type description | Recommended input (C++ or Qt data type)
--- | --- | ---
BOOLEAN | Boolean | bool
SMALLINT | 16-bit signed integer | typedef qint16
INTEGER | 32-bit signed integer | typedef qint32
BIGINT | 64-bit signed integer | typedef qint64
REAL | 32-bit variable-precision floating point | typedef qreal
DOUBLE PRECISION | 64-bit variable-precision floating point | Mapped to QString for high precision doubles, otherwise qreal
DECIMAL VARIABLE | user-specified precision, exact | typedef qreal
NUMERIC VARIABLE | user-specified precision, exact | typedef qreal
VARCHAR | variable-length character string | Mapped to QString
CHARACTER | Character string of fixed-length | Mapped to QString
TEXT | Character string of variable-length | Mapped to QString
CLOB | Character large string object | Mapped to QString
TIMESTAMP | 8 bytes, both date and time | Mapped to QDateTime
TIMESTAMP | 8 bytes, both date and time, with time zone | Mapped to QDateTime
DATE | 4 bytes, dates only | Mapped to QDate
TIME | 8 bytes, times of day only 00:00:00.00 - 23:59:59.99 | Mapped to QTime
TIME | 12 bytes times of day only, with time zone 00:00:00.00+12 | Mapped to QDateTime

### QSQLITE SQLite version 3 Data Types

QSQLITE SQLite version 3 data type | SQL type description | Recommended input (C++ or Qt data type)
--- | --- | ---
NULL | NULL value. | NULL
INTEGER | Signed integer, stored in 8, 16, 24, 32, 48, or 64-bits depending on the magnitude of the value. | typedef qint8/16/32/64
REAL | 64-bit floating point value. | typedef qreal
TEXT | Character string (UTF-8, UTF-16BE or UTF-16-LE). | Mapped to QString
CLOB | Character large string object | Mapped to QString
BLOB | The value is a BLOB of data, stored exactly as it was input. | Mapped to QByteArray

### Mimer SQL Data Types

Mimer SQL type | SQL type description | Recommended input (C++ or Qt data type)
--- | --- | ---
SMALLINT | 16-bit signed integer | typedef qint16
INTEGER | 32-bit signed integer | typedef qint32
INTEGER(n) | Integer with up to 45 digits precision | Mapped to QString
BIGINT | 64-bit signed integer | typedef qint64
REAL | 32-bit Single-precision IEEE floating point | typedef float
DOUBLE PRECISION | 64-bit Double-precision IEEE floating point | Mapped to QString for high precision doubles, otherwise qreal
FLOAT | 64-bit Double-precision IEEE floating point | Mapped to QString for high precision doubles, otherwise qreal
FLOAT(n) | Floating point with up to 45 digits precision | Mapped to QString
DECIMAL(p,s) | Decimal with up to 45 digits precision and scale | Mapped to QString
CHAR | Fixed-length character Latin-1 string (CHAR or character) | Mapped to QString
VARCHAR | Variable length Latin-1 string (VARCHAR or CHARACTER VARYING) | Mapped to QString
NCHAR | Fixed-length Unicode string (NCHAR or NATIONAL CHARACTER) | Mapped to QString
NVARCHAR | Variable length Unicode string (NVARCHAR or NATIONAL CHARACTER VARYING) | Mapped to QString
BINARY | Fixed length binary data | Mapped to QByteArray
VARBINARY | Variable length binary data (VARBINARY or BINARY VARYING) | Mapped to QByteArray
BLOB | Binary large object (BLOB or BINARY LARGE OBJECT) | Mapped to QByteArray
CLOB | Latin-1 character large object (CLOB or CHARACTER LARGE OBJECT) | Mapped to QString
NCLOB | Unicode character large object (NCLOB or NATIONAL CHARACTER LARGE OBJECT) | Mapped to QString
DATE | Date consisting of year, month, and day | Mapped to QDate
TIME | Time consisting of hours, minute, seconds with optional fractional seconds | Mapped to QTime
TIMESTAMP | Date and time with optional fractional seconds | Mapped to QDateTime
BUILTIN.UUID | Universally unique identifier | Mapped to QUuid
BOOLEAN | Boolean | bool
INTERVAL YEAR(7) | Year, format '±yyyyyyy' (max precision) | Mapped to QString
INTERVAL YEAR(7) TO MONTH | Year to month, format '±yyyyyyy-mm' (max precision) | Mapped to QString
INTERVAL MONTH(7) | Month, format '±mmmmmmm' (max precision) | Mapped to QString
INTERVAL DAY(7) | Day, format '±ddddddd' (max precision) | Mapped to QString
INTERVAL DAY(7) TO HOUR | Day to hour, format '±ddddddd hh' (max precision) | Mapped to QString
INTERVAL DAY(7) TO MINUTE | Day to minute, format '±ddddddd hh:mm' (max precision) | Mapped to QString
INTERVAL DAY(7) TO SECOND(9) | Day to second, format '±ddddddd hh:mm:ss[.fffffffff]' (max precision) | Mapped to QString
INTERVAL HOUR(8) | Hour, format '±hhhhhhhh' (max precision) | Mapped to QString
INTERVAL HOUR(8) TO MINUTE | Hour to minute, format '±hhhhhhhh:mm' (max precision) | Mapped to QString
INTERVAL HOUR(8) TO SECOND(9) | Hour to second, format '±hhhhhhhh:mm:ss[.fffffffff]' (max precision) | Mapped to QString
INTERVAL MINUTE(10) | Minute, format '±mmmmmmmmmm' (max precision) | Mapped to QString
INTERVAL MINUTE(10) TO SECOND(9) | Minute to second, format '±mmmmmmmmmm:ss[.fffffffff]' (max precision) | Mapped to QString
INTERVAL SECOND(12,9) | Second, format '±ssssssssssss[.fffffffff]' (max precision) | Mapped to QString