diff --git a/docs/_fragments/_uuid-support-table.mdx b/docs/_fragments/_uuid-support-table.mdx
index 1f62d4847..04e208c23 100644
--- a/docs/_fragments/_uuid-support-table.mdx
+++ b/docs/_fragments/_uuid-support-table.mdx
@@ -2,9 +2,9 @@ import { DialectTableFilter } from '@site/src/components/dialect-table-filter.ts
-| | PostgreSQL | MariaDB | MySQL | MSSQL | SQLite | Snowflake | db2 | ibmi |
-| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ------ | --------- | --- | ---- |
-| `uuidV1` | [`uuid_generate_v1`](https://www.postgresql.org/docs/current/uuid-ossp.html) (requires `uuid-ossp`) | [`UUID`](https://mariadb.com/kb/en/uuid/) | [`UUID`](https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html#function_uuid) | N/A | N/A | N/A | N/A | N/A |
-| `uuidV4` | **pg >= v13**: [`gen_random_uuid`](https://www.postgresql.org/docs/current/functions-uuid.html)
**pg < v13**: [`uuid_generate_v4`](https://www.postgresql.org/docs/current/uuid-ossp.html) (requires `uuid-ossp`) | N/A | N/A | [`NEWID`](https://learn.microsoft.com/en-us/sql/t-sql/functions/newid-transact-sql?view=sql-server-ver16) | N/A | N/A | N/A | N/A |
+| | PostgreSQL | MariaDB | MySQL | MSSQL | SQLite | Snowflake | db2 | ibmi | SAP HANA |
+| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ------ | --------- | --- | ---- | -------- |
+| `uuidV1` | [`uuid_generate_v1`](https://www.postgresql.org/docs/current/uuid-ossp.html) (requires `uuid-ossp`) | [`UUID`](https://mariadb.com/kb/en/uuid/) | [`UUID`](https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html#function_uuid) | N/A | N/A | N/A | N/A | N/A | N/A |
+| `uuidV4` | **pg >= v13**: [`gen_random_uuid`](https://www.postgresql.org/docs/current/functions-uuid.html)
**pg < v13**: [`uuid_generate_v4`](https://www.postgresql.org/docs/current/uuid-ossp.html) (requires `uuid-ossp`) | N/A | N/A | [`NEWID`](https://learn.microsoft.com/en-us/sql/t-sql/functions/newid-transact-sql?view=sql-server-ver16) | N/A | N/A | N/A | N/A | N/A |
diff --git a/docs/databases/hana.mdx b/docs/databases/hana.mdx
new file mode 100644
index 000000000..0d8f7536a
--- /dev/null
+++ b/docs/databases/hana.mdx
@@ -0,0 +1,59 @@
+---
+title: SAP HANA
+sidebar_position: 1
+---
+
+# Sequelize for SAP HANA
+
+:::info Version Compatibility
+
+See [Releases](/releases#sap-hana-support-table) to see which versions of SAP HANA are supported.
+
+:::
+
+To use Sequelize with SAP HANA, you need to install the `@sequelize/hana` dialect package:
+
+```bash npm2yarn
+npm i @sequelize/hana
+```
+
+Then use the `HanaDialect` class as the dialect option in the Sequelize constructor:
+
+```ts
+import { Sequelize } from '@sequelize/core';
+import { HanaDialect } from '@sequelize/hana';
+
+const sequelize = new Sequelize({
+ dialect: HanaDialect,
+ database: 'mydb',
+ user: 'myuser',
+ password: 'mypass',
+ host: 'localhost',
+ port: 443,
+});
+```
+
+## Connection Options
+
+import ConnectionOptions from './_connection-options.md';
+
+
+
+The following options are accepted by the SAP HANA dialect:
+
+| Option | Description |
+| --------------- | ------------------------------------------------------------------------ |
+| `host` | Specifies the name of the host to connect to. |
+| `port` | Specifies the port number to connect to. |
+| `database` | Specifies the name of the database to connect to. |
+| `user` | Specifies the name of an SAP HANA database user. |
+| `password` | Specifies the password for the SAP HANA database user. |
+| `currentSchema` | Sets the current schema, which is used for identifiers without a schema. |
+
+:::info
+
+Sequelize uses the [`@sap/hana-client`](https://www.npmjs.com/package/@sap/hana-client) package to connect to SAP HANA.
+Most of the above options are provided as-is to the `@sap/hana-client` package,
+and you can find more information about them in the [@sap/hana-client documentation](https://help.sap.com/docs/SAP_HANA_CLIENT/f1b440ded6144a54ada97ff95dac7adf/4fe9978ebac44f35b9369ef5a4a26f4c.html).
+
+:::
diff --git a/docs/models/data-types.mdx b/docs/models/data-types.mdx
index 5d0710761..f8d7a741f 100644
--- a/docs/models/data-types.mdx
+++ b/docs/models/data-types.mdx
@@ -29,22 +29,22 @@ A ❌ means the dialect does not support that DataType.
-| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | [SQLite][sqlite-datatypes] | [Snowflake](https://docs.snowflake.com/en/sql-reference/data-types-text.html) | db2 | ibmi |
-| -------------------------------------------------------------------------------- | --------------------------------------------------------------- | ---------------------------------- | ---------------------------- | ------------------------------ | -------------------------- | ----------------------------------------------------------------------------- | --------------------------- | --------------------------- |
-| [`STRING`](pathname:///api/v7/classes/_sequelize_core.index.unknown.STRING.html) | [`VARCHAR(255)`][postgres-char] | [`VARCHAR(255)`][mariadb-varchar] | [`VARCHAR(255)`][mysql-char] | [`NVARCHAR(255)`][mssql-nchar] | `TEXT` | `VARCHAR(255)` | `VARCHAR(255)` | `VARCHAR(255)` |
-| `STRING(100)` | `VARCHAR(100)` | `VARCHAR(100)` | `VARCHAR(100)` | `NVARCHAR(100)` | `TEXT` | `VARCHAR(100)` | `VARCHAR(100)` | `VARCHAR(100)` |
-| `STRING.BINARY` | ❌ | `VARCHAR(255) BINARY` | `VARCHAR(255) BINARY` | ❌ | `TEXT COLLATE BINARY` | `VARCHAR(255) BINARY` | `VARCHAR(255) FOR BIT DATA` | `VARCHAR(255) FOR BIT DATA` |
-| `STRING(100).BINARY` | ❌ | `VARCHAR(100) BINARY` | `VARCHAR(100) BINARY` | ❌ | `TEXT COLLATE BINARY` | `VARCHAR(100) BINARY` | `VARCHAR(100) FOR BIT DATA` | `VARCHAR(100) FOR BIT DATA` |
-| [`TEXT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.TEXT.html) | [`TEXT`][postgres-char] | [`TEXT`][mariadb-text] | [`TEXT`][mysql-text] | `NVARCHAR(MAX)` | `TEXT` | `TEXT` | `CLOB(2147483647)` | `CLOB(2147483647)` |
-| `TEXT('tiny')` | `TEXT` | [`TINYTEXT`][mariadb-tinytext] | [`TINYTEXT`][mysql-text] | `NVARCHAR(256)` | `TEXT` | `TEXT` | `VARCHAR(256)` | `VARCHAR(256)` |
-| `TEXT('medium')` | `TEXT` | [`MEDIUMTEXT`][mariadb-mediumtext] | [`MEDIUMTEXT`][mysql-text] | `NVARCHAR(MAX)` | `TEXT` | `TEXT` | `VARCHAR(16777216)` | `VARCHAR(16777216)` |
-| `TEXT('long')` | `TEXT` | [`LONGTEXT`][mariadb-longtext] | [`LONGTEXT`][mysql-text] | `NVARCHAR(MAX)` | `TEXT` | `TEXT` | `CLOB(2147483647)` | `CLOB(2147483647)` |
-| [`CHAR`](pathname:///api/v7/classes/_sequelize_core.index.unknown.CHAR.html) | [`CHAR(255)`][postgres-char] | [`CHAR(255)`][mariadb-char] | [`CHAR(255)`][mysql-char] | [`CHAR(255)`][mssql-char] | ❌ | `CHAR(255)` | `CHAR(255)` | `CHAR(255)` |
-| `CHAR(100)` | `CHAR(100)` | `CHAR(100)` | `CHAR(100)` | `CHAR(100)` | ❌ | `CHAR(100)` | `CHAR(100)` | `CHAR(100)` |
-| `CHAR.BINARY` | ❌ | `CHAR(255) BINARY` | `CHAR(255) BINARY` | ❌ | ❌ | `CHAR(255) BINARY` | `CHAR(255) FOR BIT DATA` | `CHAR(255) FOR BIT DATA` |
-| `CHAR(100).BINARY` | ❌ | `CHAR(100) BINARY` | `CHAR(100) BINARY` | ❌ | ❌ | `CHAR(100) BINARY` | `CHAR(255) FOR BIT DATA` | `CHAR(255) FOR BIT DATA` |
-| `CITEXT` | [`CITEXT`](https://www.postgresql.org/docs/current/citext.html) | ❌ | ❌ | ❌ | `TEXT COLLATE NOCASE` | ❌ | ❌ | ❌ |
-| `TSVECTOR` | [`TSVECTOR`][postgres-tsvector] | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | [SQLite][sqlite-datatypes] | [Snowflake](https://docs.snowflake.com/en/sql-reference/data-types-text.html) | db2 | ibmi | SAP HANA |
+| -------------------------------------------------------------------------------- | --------------------------------------------------------------- | ---------------------------------- | ---------------------------- | ------------------------------ | -------------------------- | ----------------------------------------------------------------------------- | --------------------------- | --------------------------- | ---------------------------- |
+| [`STRING`](pathname:///api/v7/classes/_sequelize_core.index.unknown.STRING.html) | [`VARCHAR(255)`][postgres-char] | [`VARCHAR(255)`][mariadb-varchar] | [`VARCHAR(255)`][mysql-char] | [`NVARCHAR(255)`][mssql-nchar] | `TEXT` | `VARCHAR(255)` | `VARCHAR(255)` | `VARCHAR(255)` | [`NVARCHAR(255)`][hana-char] |
+| `STRING(100)` | `VARCHAR(100)` | `VARCHAR(100)` | `VARCHAR(100)` | `NVARCHAR(100)` | `TEXT` | `VARCHAR(100)` | `VARCHAR(100)` | `VARCHAR(100)` | `NVARCHAR(100)` |
+| `STRING.BINARY` | ❌ | `VARCHAR(255) BINARY` | `VARCHAR(255) BINARY` | ❌ | `TEXT COLLATE BINARY` | `VARCHAR(255) BINARY` | `VARCHAR(255) FOR BIT DATA` | `VARCHAR(255) FOR BIT DATA` | ❌ |
+| `STRING(100).BINARY` | ❌ | `VARCHAR(100) BINARY` | `VARCHAR(100) BINARY` | ❌ | `TEXT COLLATE BINARY` | `VARCHAR(100) BINARY` | `VARCHAR(100) FOR BIT DATA` | `VARCHAR(100) FOR BIT DATA` | ❌ |
+| [`TEXT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.TEXT.html) | [`TEXT`][postgres-char] | [`TEXT`][mariadb-text] | [`TEXT`][mysql-text] | `NVARCHAR(MAX)` | `TEXT` | `TEXT` | `CLOB(2147483647)` | `CLOB(2147483647)` | [`NCLOB`][hana-lob] |
+| `TEXT('tiny')` | `TEXT` | [`TINYTEXT`][mariadb-tinytext] | [`TINYTEXT`][mysql-text] | `NVARCHAR(256)` | `TEXT` | `TEXT` | `VARCHAR(256)` | `VARCHAR(256)` | `NVARCHAR(256)` |
+| `TEXT('medium')` | `TEXT` | [`MEDIUMTEXT`][mariadb-mediumtext] | [`MEDIUMTEXT`][mysql-text] | `NVARCHAR(MAX)` | `TEXT` | `TEXT` | `VARCHAR(16777216)` | `VARCHAR(16777216)` | `NCLOB` |
+| `TEXT('long')` | `TEXT` | [`LONGTEXT`][mariadb-longtext] | [`LONGTEXT`][mysql-text] | `NVARCHAR(MAX)` | `TEXT` | `TEXT` | `CLOB(2147483647)` | `CLOB(2147483647)` | `NCLOB` |
+| [`CHAR`](pathname:///api/v7/classes/_sequelize_core.index.unknown.CHAR.html) | [`CHAR(255)`][postgres-char] | [`CHAR(255)`][mariadb-char] | [`CHAR(255)`][mysql-char] | [`CHAR(255)`][mssql-char] | ❌ | `CHAR(255)` | `CHAR(255)` | `CHAR(255)` | `NCHAR(255)` |
+| `CHAR(100)` | `CHAR(100)` | `CHAR(100)` | `CHAR(100)` | `CHAR(100)` | ❌ | `CHAR(100)` | `CHAR(100)` | `CHAR(100)` | `NCHAR(100)` |
+| `CHAR.BINARY` | ❌ | `CHAR(255) BINARY` | `CHAR(255) BINARY` | ❌ | ❌ | `CHAR(255) BINARY` | `CHAR(255) FOR BIT DATA` | `CHAR(255) FOR BIT DATA` | ❌ |
+| `CHAR(100).BINARY` | ❌ | `CHAR(100) BINARY` | `CHAR(100) BINARY` | ❌ | ❌ | `CHAR(100) BINARY` | `CHAR(255) FOR BIT DATA` | `CHAR(255) FOR BIT DATA` | ❌ |
+| `CITEXT` | [`CITEXT`](https://www.postgresql.org/docs/current/citext.html) | ❌ | ❌ | ❌ | `TEXT COLLATE NOCASE` | ❌ | ❌ | ❌ | ❌ |
+| `TSVECTOR` | [`TSVECTOR`][postgres-tsvector] | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
@@ -52,9 +52,9 @@ A ❌ means the dialect does not support that DataType.
-| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | SQLite | Snowflake | db2 | ibmi |
-| ------------------ | -------------------------------------------------------------------------- | ------------------------------- | ----------------------------- | ----------------------------------------------------------------------------------------------------- | -------------------------------- | -------------------------------------------------------------------------------- | --------- | ---------- |
-| `BOOLEAN` | [`BOOLEAN`](https://www.postgresql.org/docs/current/datatype-boolean.html) | [`TINYINT(1)`][mariadb-tinyint] | [`TINYINT(1)`][mysql-numeric] | [`BIT`](https://docs.microsoft.com/en-us/sql/t-sql/data-types/bit-transact-sql?view=sql-server-ver15) | [`TINYINT(1)`][sqlite-datatypes] | [`BOOLEAN`](https://docs.snowflake.com/en/sql-reference/data-types-logical.html) | `BOOLEAN` | `SMALLINT` |
+| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | SQLite | Snowflake | db2 | ibmi | SAP HANA |
+| ------------------ | -------------------------------------------------------------------------- | ------------------------------- | ----------------------------- | ----------------------------------------------------------------------------------------------------- | -------------------------------- | -------------------------------------------------------------------------------- | --------- | ---------- | ------------------------- |
+| `BOOLEAN` | [`BOOLEAN`](https://www.postgresql.org/docs/current/datatype-boolean.html) | [`TINYINT(1)`][mariadb-tinyint] | [`TINYINT(1)`][mysql-numeric] | [`BIT`](https://docs.microsoft.com/en-us/sql/t-sql/data-types/bit-transact-sql?view=sql-server-ver15) | [`TINYINT(1)`][sqlite-datatypes] | [`BOOLEAN`](https://docs.snowflake.com/en/sql-reference/data-types-logical.html) | `BOOLEAN` | `SMALLINT` | [`BOOLEAN`][hana-boolean] |
@@ -62,28 +62,28 @@ A ❌ means the dialect does not support that DataType.
-| Sequelize DataType | [PostgreSQL][postgres-numeric] | [MariaDB][mariadb-numeric] | [MySQL][mysql-numeric] | [MSSQL][mssql-ints] | [SQLite][sqlite-datatypes] | [Snowflake][snowflake-numeric] | db2 | ibmi |
-| -------------------------------------------------------------------------------------- | ------------------------------ | --------------------------------------------------- | ---------------------- | -------------------- | -------------------------- | ------------------------------ | ------------------- | ------------------- |
-| [`TINYINT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.TINYINT.html) | `SMALLINT`[^ints-1] | [`TINYINT`][mariadb-tinyint] | `TINYINT` | `SMALLINT`[^mssql-1] | `INTEGER` | `INTEGER` | `SMALLINT`[^ints-1] | `SMALLINT`[^ints-1] |
-| `TINYINT(1)` | ❌ | `TINYINT(1)` | `TINYINT(1)` | ❌ | ❌ | `❌ | ❌ | ❌ |
-| `TINYINT.UNSIGNED` | `SMALLINT` | `TINYINT UNSIGNED` | `TINYINT UNSIGNED` | `TINYINT`[^mssql-1] | `INTEGER` | `INTEGER` | `SMALLINT` | `SMALLINT` |
-| `TINYINT.ZEROFILL` | ❌ | `TINYINT ZEROFILL` | `TINYINT ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ |
-| [`SMALLINT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.SMALLINT.html) | `SMALLINT` | [`SMALLINT`](https://mariadb.com/kb/en/smallint/) | `SMALLINT` | `SMALLINT` | `INTEGER` | `INTEGER` | `SMALLINT` | `SMALLINT` |
-| `SMALLINT(1)` | ❌ | `SMALLINT(1)` | `SMALLINT(1)` | ❌ | ❌ | ❌ | ❌ | ❌ |
-| `SMALLINT.UNSIGNED` | `INTEGER`[^ints-2] | `SMALLINT UNSIGNED` | `SMALLINT UNSIGNED` | `INTEGER`[^ints-2] | `INTEGER` | `INTEGER` | `INTEGER`[^ints-2] | `INTEGER`[^ints-2] |
-| `SMALLINT.ZEROFILL` | ❌ | `SMALLINT ZEROFILL` | `SMALLINT ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ |
-| [`MEDIUMINT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.MEDIUMINT.html) | `INTEGER` | [`MEDIUMINT`](https://mariadb.com/kb/en/mediumint/) | `MEDIUMINT` | `INTEGER`[^ints-1] | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` |
-| `MEDIUMINT(1)` | ❌ | `MEDIUMINT(1)` | `MEDIUMINT(1)` | ❌ | ❌ | ❌ | ❌ | ❌ |
-| `MEDIUMINT.UNSIGNED` | `INTEGER` | `MEDIUMINT UNSIGNED` | `MEDIUMINT UNSIGNED` | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` |
-| `MEDIUMINT.ZEROFILL` | ❌ | `MEDIUMINT ZEROFILL` | `MEDIUMINT ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ |
-| [`INTEGER`](pathname:///api/v7/classes/_sequelize_core.index.unknown.INTEGER.html) | `INTEGER` | [`INTEGER`](https://mariadb.com/kb/en/integer/) | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` |
-| `INTEGER(1)` | ❌ | `INTEGER(1)` | `INTEGER(1)` | ❌ | ❌ | ❌ | ❌ | ❌ |
-| `INTEGER.UNSIGNED` | `BIGINT` | `INTEGER UNSIGNED` | `INTEGER UNSIGNED` | `BIGINT` | `INTEGER` | `INTEGER` | `BIGINT` | `BIGINT` |
-| `INTEGER.ZEROFILL` | ❌ | `INTEGER ZEROFILL` | `INTEGER ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ |
-| [`BIGINT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.BIGINT.html) | `BIGINT` | [`BIGINT`](https://mariadb.com/kb/en/bigint/) | `BIGINT` | `BIGINT` | ❌ | `INTEGER` | `BIGINT` | `BIGINT` |
-| `BIGINT(1)` | ❌ | `BIGINT(1)` | `BIGINT(1)` | ❌ | ❌ | ❌ | ❌ | ❌ |
-| `BIGINT.UNSIGNED` | ❌ | `BIGINT UNSIGNED` | `BIGINT UNSIGNED` | ❌ | ❌ | `INTEGER` | ❌ | ❌ |
-| `BIGINT.ZEROFILL` | ❌ | `BIGINT ZEROFILL` | `BIGINT ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ |
+| Sequelize DataType | [PostgreSQL][postgres-numeric] | [MariaDB][mariadb-numeric] | [MySQL][mysql-numeric] | [MSSQL][mssql-ints] | [SQLite][sqlite-datatypes] | [Snowflake][snowflake-numeric] | db2 | ibmi | SAP HANA |
+| -------------------------------------------------------------------------------------- | ------------------------------ | --------------------------------------------------- | ---------------------- | -------------------- | -------------------------- | ------------------------------ | ------------------- | ------------------- | ------------------- |
+| [`TINYINT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.TINYINT.html) | `SMALLINT`[^ints-1] | [`TINYINT`][mariadb-tinyint] | `TINYINT` | `SMALLINT`[^mssql-1] | `INTEGER` | `INTEGER` | `SMALLINT`[^ints-1] | `SMALLINT`[^ints-1] | `SMALLINT`[^hana-1] |
+| `TINYINT(1)` | ❌ | `TINYINT(1)` | `TINYINT(1)` | ❌ | ❌ | `❌ | ❌ | ❌ | ❌ |
+| `TINYINT.UNSIGNED` | `SMALLINT` | `TINYINT UNSIGNED` | `TINYINT UNSIGNED` | `TINYINT`[^mssql-1] | `INTEGER` | `INTEGER` | `SMALLINT` | `SMALLINT` | `TINYINT`[^hana-1] |
+| `TINYINT.ZEROFILL` | ❌ | `TINYINT ZEROFILL` | `TINYINT ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| [`SMALLINT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.SMALLINT.html) | `SMALLINT` | [`SMALLINT`](https://mariadb.com/kb/en/smallint/) | `SMALLINT` | `SMALLINT` | `INTEGER` | `INTEGER` | `SMALLINT` | `SMALLINT` | `SMALLINT` |
+| `SMALLINT(1)` | ❌ | `SMALLINT(1)` | `SMALLINT(1)` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `SMALLINT.UNSIGNED` | `INTEGER`[^ints-2] | `SMALLINT UNSIGNED` | `SMALLINT UNSIGNED` | `INTEGER`[^ints-2] | `INTEGER` | `INTEGER` | `INTEGER`[^ints-2] | `INTEGER`[^ints-2] | `INTEGER`[^ints-2] |
+| `SMALLINT.ZEROFILL` | ❌ | `SMALLINT ZEROFILL` | `SMALLINT ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| [`MEDIUMINT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.MEDIUMINT.html) | `INTEGER` | [`MEDIUMINT`](https://mariadb.com/kb/en/mediumint/) | `MEDIUMINT` | `INTEGER`[^ints-1] | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER`[^ints-1] |
+| `MEDIUMINT(1)` | ❌ | `MEDIUMINT(1)` | `MEDIUMINT(1)` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `MEDIUMINT.UNSIGNED` | `INTEGER` | `MEDIUMINT UNSIGNED` | `MEDIUMINT UNSIGNED` | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` |
+| `MEDIUMINT.ZEROFILL` | ❌ | `MEDIUMINT ZEROFILL` | `MEDIUMINT ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| [`INTEGER`](pathname:///api/v7/classes/_sequelize_core.index.unknown.INTEGER.html) | `INTEGER` | [`INTEGER`](https://mariadb.com/kb/en/integer/) | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` |
+| `INTEGER(1)` | ❌ | `INTEGER(1)` | `INTEGER(1)` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `INTEGER.UNSIGNED` | `BIGINT` | `INTEGER UNSIGNED` | `INTEGER UNSIGNED` | `BIGINT` | `INTEGER` | `INTEGER` | `BIGINT` | `BIGINT` | `BIGINT` |
+| `INTEGER.ZEROFILL` | ❌ | `INTEGER ZEROFILL` | `INTEGER ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| [`BIGINT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.BIGINT.html) | `BIGINT` | [`BIGINT`](https://mariadb.com/kb/en/bigint/) | `BIGINT` | `BIGINT` | ❌ | `INTEGER` | `BIGINT` | `BIGINT` | `BIGINT` |
+| `BIGINT(1)` | ❌ | `BIGINT(1)` | `BIGINT(1)` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `BIGINT.UNSIGNED` | ❌ | `BIGINT UNSIGNED` | `BIGINT UNSIGNED` | ❌ | ❌ | `INTEGER` | ❌ | ❌ | ❌ |
+| `BIGINT.ZEROFILL` | ❌ | `BIGINT ZEROFILL` | `BIGINT ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
@@ -93,6 +93,8 @@ A ❌ means the dialect does not support that DataType.
[^mssql-1]: `TINYINT` in SQL Server is unsigned. `DataTypes.TINYINT.UNSIGNED` therefore maps to `TINYINT`, and `DataTypes.TINYINT` maps to `SMALLINT`.
+[^hana-1]: `TINYINT` in SAP HANA is unsigned. `DataTypes.TINYINT.UNSIGNED` therefore maps to `TINYINT`, and `DataTypes.TINYINT` maps to `SMALLINT`.
+
:::caution
The JavaScript [`number`][mdn-number] type can represent ints ranging from [`-9007199254740991`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER)
@@ -118,16 +120,16 @@ The types in the following table are typically represented as an [IEEE 754 float
-| Sequelize DataType | [PostgreSQL][postgres-numeric] | [MariaDB][mariadb-numeric] | [MySQL][mysql-numeric] | [MSSQL][mssql-inexact-decimals] | [SQLite][sqlite-datatypes] | [Snowflake][snowflake-numeric] | db2 | ibmi |
-| -------------------------------------------------------------------------------- | ------------------------------ | ------------------------------------------------------- | --------------------------- | ------------------------------- | -------------------------- | ------------------------------ | -------- | -------- |
-| [`FLOAT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.FLOAT.html) | `REAL` | [`FLOAT`](https://mariadb.com/kb/en/float/) | `FLOAT` | `REAL` | `REAL`[^sqlite-3] | `FLOAT`[^snowflake-1] | `REAL` | `REAL` |
-| `FLOAT(11, 10)` | ❌ | `FLOAT(11,10)` | `FLOAT(11,10)` | ❌ | ❌ | ❌ | ❌ | ❌ |
-| `FLOAT.UNSIGNED` | `REAL` | `FLOAT UNSIGNED` | `FLOAT UNSIGNED` | `REAL` | `REAL` | `FLOAT` | `REAL` | `REAL` |
-| `FLOAT.ZEROFILL` | ❌ | `FLOAT ZEROFILL` | `FLOAT ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ |
-| [`DOUBLE`](pathname:///api/v7/classes/_sequelize_core.index.unknown.DOUBLE.html) | `DOUBLE PRECISION` | [`DOUBLE PRECISION`](https://mariadb.com/kb/en/double/) | `DOUBLE PRECISION` | `DOUBLE PRECISION` | `REAL` | `FLOAT` | `DOUBLE` | `DOUBLE` |
-| `DOUBLE(11, 10)` | ❌ | `DOUBLE PRECISION(11, 10)` | `DOUBLE PRECISION(11, 10)` | ❌ | ❌ | ❌ | ❌ | ❌ |
-| `DOUBLE.UNSIGNED` | `DOUBLE PRECISION` | `DOUBLE PRECISION UNSIGNED` | `DOUBLE PRECISION UNSIGNED` | `DOUBLE PRECISION` | `REAL` | `FLOAT` | `DOUBLE` | `DOUBLE` |
-| `DOUBLE.ZEROFILL` | ❌ | `DOUBLE PRECISION ZEROFILL` | `DOUBLE PRECISION ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ |
+| Sequelize DataType | [PostgreSQL][postgres-numeric] | [MariaDB][mariadb-numeric] | [MySQL][mysql-numeric] | [MSSQL][mssql-inexact-decimals] | [SQLite][sqlite-datatypes] | [Snowflake][snowflake-numeric] | db2 | ibmi | SAP HANA |
+| -------------------------------------------------------------------------------- | ------------------------------ | ------------------------------------------------------- | --------------------------- | ------------------------------- | -------------------------- | ------------------------------ | -------- | -------- | -------- |
+| [`FLOAT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.FLOAT.html) | `REAL` | [`FLOAT`](https://mariadb.com/kb/en/float/) | `FLOAT` | `REAL` | `REAL`[^sqlite-3] | `FLOAT`[^snowflake-1] | `REAL` | `REAL` | `REAL` |
+| `FLOAT(11, 10)` | ❌ | `FLOAT(11,10)` | `FLOAT(11,10)` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `FLOAT.UNSIGNED` | `REAL` | `FLOAT UNSIGNED` | `FLOAT UNSIGNED` | `REAL` | `REAL` | `FLOAT` | `REAL` | `REAL` | `REAL` |
+| `FLOAT.ZEROFILL` | ❌ | `FLOAT ZEROFILL` | `FLOAT ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| [`DOUBLE`](pathname:///api/v7/classes/_sequelize_core.index.unknown.DOUBLE.html) | `DOUBLE PRECISION` | [`DOUBLE PRECISION`](https://mariadb.com/kb/en/double/) | `DOUBLE PRECISION` | `DOUBLE PRECISION` | `REAL` | `FLOAT` | `DOUBLE` | `DOUBLE` | `DOUBLE` |
+| `DOUBLE(11, 10)` | ❌ | `DOUBLE PRECISION(11, 10)` | `DOUBLE PRECISION(11, 10)` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `DOUBLE.UNSIGNED` | `DOUBLE PRECISION` | `DOUBLE PRECISION UNSIGNED` | `DOUBLE PRECISION UNSIGNED` | `DOUBLE PRECISION` | `REAL` | `FLOAT` | `DOUBLE` | `DOUBLE` | `DOUBLE` |
+| `DOUBLE.ZEROFILL` | ❌ | `DOUBLE PRECISION ZEROFILL` | `DOUBLE PRECISION ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
@@ -149,12 +151,12 @@ Numeric options can be combined:
-| Sequelize DataType | [PostgreSQL][postgres-numeric] | [MariaDB][mariadb-numeric] | [MySQL][mysql-numeric] | [MSSQL][mssql-exact-decimals] | [SQLite][sqlite-datatypes] | [Snowflake][snowflake-numeric] | db2 | ibmi |
-| ---------------------------------------------------------------------------------- | ------------------------------ | ------------------------------------------------------ | ------------------------ | ----------------------------- | -------------------------- | ------------------------------ | ---------------- | ---------------- |
-| [`DECIMAL`](pathname:///api/v7/classes/_sequelize_core.index.unknown.DECIMAL.html) | `DECIMAL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
-| `DECIMAL(11, 10)` | `DECIMAL(11, 10)` | [`DECIMAL(11,10)`](https://mariadb.com/kb/en/decimal/) | `DECIMAL(11,10)` | `DECIMAL(11,10)` | ❌ | `DECIMAL(11,10)` | `DECIMAL(11,10)` | `DECIMAL(11,10)` |
-| `DECIMAL(p, s).UNSIGNED` | `DECIMAL(p, s)` | `DECIMAL(p, s) UNSIGNED` | `DECIMAL(p, s) UNSIGNED` | `DECIMAL(p, s)` | ❌ | `DECIMAL(p, s)` | `DECIMAL(p, s)` | `DECIMAL(p, s)` |
-| `DECIMAL(p, s).ZEROFILL` | ❌ | `DECIMAL(p, s) ZEROFILL` | `DECIMAL(p, s) ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ |
+| Sequelize DataType | [PostgreSQL][postgres-numeric] | [MariaDB][mariadb-numeric] | [MySQL][mysql-numeric] | [MSSQL][mssql-exact-decimals] | [SQLite][sqlite-datatypes] | [Snowflake][snowflake-numeric] | db2 | ibmi | SAP HANA |
+| ---------------------------------------------------------------------------------- | ------------------------------ | ------------------------------------------------------ | ------------------------ | ----------------------------- | -------------------------- | ------------------------------ | ---------------- | ---------------- | ---------------- |
+| [`DECIMAL`](pathname:///api/v7/classes/_sequelize_core.index.unknown.DECIMAL.html) | `DECIMAL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | `DECIMAL` |
+| `DECIMAL(11, 10)` | `DECIMAL(11, 10)` | [`DECIMAL(11,10)`](https://mariadb.com/kb/en/decimal/) | `DECIMAL(11,10)` | `DECIMAL(11,10)` | ❌ | `DECIMAL(11,10)` | `DECIMAL(11,10)` | `DECIMAL(11,10)` | `DECIMAL(11,10)` |
+| `DECIMAL(p, s).UNSIGNED` | `DECIMAL(p, s)` | `DECIMAL(p, s) UNSIGNED` | `DECIMAL(p, s) UNSIGNED` | `DECIMAL(p, s)` | ❌ | `DECIMAL(p, s)` | `DECIMAL(p, s)` | `DECIMAL(p, s)` | `DECIMAL(p, s)` |
+| `DECIMAL(p, s).ZEROFILL` | ❌ | `DECIMAL(p, s) ZEROFILL` | `DECIMAL(p, s) ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
@@ -178,13 +180,13 @@ Numeric options can be combined:
-| Sequelize DataType | [PostgreSQL][postgres-temporal] | [MariaDB][mariadb-temporal] | [MySQL][mysql-temporal] | MSSQL | SQLite | [Snowflake][snowflake-temporal] | db2 | ibmi |
-| ---------------------------------------------------------------------------- | ------------------------------- | ------------------------------------------------- | ------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------ | ------------------------------- | -------------- | -------------- |
-| [`DATE`](pathname:///api/v7/classes/_sequelize_core.index.unknown.DATE.html) | `TIMESTAMP WITH TIME ZONE` | [`DATETIME`](https://mariadb.com/kb/en/datetime/) | [`DATETIME`](https://dev.mysql.com/doc/refman/8.0/en/datetime.html) | [`DATETIMEOFFSET`](https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetimeoffset-transact-sql) | `TEXT` | `TIMESTAMP` | `TIMESTAMP` | `TIMESTAMP` |
-| `DATE(6)` | `TIMESTAMP(6) WITH TIME ZONE` | `DATETIME(6)` | `DATETIME(6)` | `DATETIMEOFFSET(6)` | `TEXT` | `TIMESTAMP(6)` | `TIMESTAMP(6)` | `TIMESTAMP(6)` |
-| `DATEONLY` | `DATE` | [`DATE`](https://mariadb.com/kb/en/date/) | [`DATE`](https://dev.mysql.com/doc/refman/8.0/en/datetime.html) | [`DATE`](https://docs.microsoft.com/en-us/sql/t-sql/data-types/date-transact-sql) | `TEXT` | `DATE` | `DATE` | `DATE` |
-| `TIME` | `TIME` | [`TIME`](https://mariadb.com/kb/en/time/) | [`TIME`](https://dev.mysql.com/doc/refman/8.0/en/time.html) | [`TIME`](https://docs.microsoft.com/en-us/sql/t-sql/data-types/time-transact-sql) | `TEXT` | `TIME` | `TIME` | `TIME` |
-| `TIME(6)` | `TIME(6)` | `TIME(6)` | `TIME(6)` | `TIME(6)` | `TEXT` | `TIME(6)` | `TIME(6)` | `TIME(6)` |
+| Sequelize DataType | [PostgreSQL][postgres-temporal] | [MariaDB][mariadb-temporal] | [MySQL][mysql-temporal] | MSSQL | SQLite | [Snowflake][snowflake-temporal] | db2 | ibmi | [SAP HANA][hana-temporal] |
+| ---------------------------------------------------------------------------- | ------------------------------- | ------------------------------------------------- | ------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------ | ------------------------------- | -------------- | -------------- | ------------------------- |
+| [`DATE`](pathname:///api/v7/classes/_sequelize_core.index.unknown.DATE.html) | `TIMESTAMP WITH TIME ZONE` | [`DATETIME`](https://mariadb.com/kb/en/datetime/) | [`DATETIME`](https://dev.mysql.com/doc/refman/8.0/en/datetime.html) | [`DATETIMEOFFSET`](https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetimeoffset-transact-sql) | `TEXT` | `TIMESTAMP` | `TIMESTAMP` | `TIMESTAMP` | `TIMESTAMP` |
+| `DATE(6)` | `TIMESTAMP(6) WITH TIME ZONE` | `DATETIME(6)` | `DATETIME(6)` | `DATETIMEOFFSET(6)` | `TEXT` | `TIMESTAMP(6)` | `TIMESTAMP(6)` | `TIMESTAMP(6)` | `TIMESTAMP` |
+| `DATEONLY` | `DATE` | [`DATE`](https://mariadb.com/kb/en/date/) | [`DATE`](https://dev.mysql.com/doc/refman/8.0/en/datetime.html) | [`DATE`](https://docs.microsoft.com/en-us/sql/t-sql/data-types/date-transact-sql) | `TEXT` | `DATE` | `DATE` | `DATE` | `DATE` |
+| `TIME` | `TIME` | [`TIME`](https://mariadb.com/kb/en/time/) | [`TIME`](https://dev.mysql.com/doc/refman/8.0/en/time.html) | [`TIME`](https://docs.microsoft.com/en-us/sql/t-sql/data-types/time-transact-sql) | `TEXT` | `TIME` | `TIME` | `TIME` | `TIME` |
+| `TIME(6)` | `TIME(6)` | `TIME(6)` | `TIME(6)` | `TIME(6)` | `TEXT` | `TIME(6)` | `TIME(6)` | `TIME(6)` | ❌ |
@@ -195,9 +197,9 @@ which will use the appropriate native SQL function based on your dialect.
-| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | SQLite | Snowflake | db2 | ibmi |
-| ------------------ | -------------------------------------------------------------------- | --------------------------------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ------ | --------- | -------------- | ----- |
-| `NOW` | [`NOW`](https://www.postgresql.org/docs/8.2/functions-datetime.html) | [`NOW`](https://mariadb.com/kb/en/now/) | [`NOW`](https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html) | [`GETDATE()`](https://docs.microsoft.com/en-us/sql/t-sql/functions/getdate-transact-sql?view=sql-server-ver15) | ❌ | `NOW` | `CURRENT TIME` | `NOW` |
+| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | SQLite | Snowflake | db2 | ibmi | SAP HANA |
+| ------------------ | -------------------------------------------------------------------- | --------------------------------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ------ | --------- | -------------- | ----- | -------------- |
+| `NOW` | [`NOW`](https://www.postgresql.org/docs/8.2/functions-datetime.html) | [`NOW`](https://mariadb.com/kb/en/now/) | [`NOW`](https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html) | [`GETDATE()`](https://docs.microsoft.com/en-us/sql/t-sql/functions/getdate-transact-sql?view=sql-server-ver15) | ❌ | `NOW` | `CURRENT TIME` | `NOW` | `CURRENT_DATE` |
@@ -221,9 +223,9 @@ to limit which version of UUID is accepted by the attribute to v4 or v1 respecti
-| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | SQLite | Snowflake | db2 | ibmi |
-| ------------------ | -------------------------------------------------------------------- | ----------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------- | ------ | ------------- | ----------------------- | ----------------------- |
-| `UUID` | [`UUID`](https://www.postgresql.org/docs/current/datatype-uuid.html) | `CHAR(36) BINARY` | `CHAR(36) BINARY` | [`UNIQUEIDENTIFIER`](https://learn.microsoft.com/en-us/sql/t-sql/data-types/uniqueidentifier-transact-sql?view=sql-server-ver16) | `TEXT` | `VARCHAR(36)` | `CHAR(36) FOR BIT DATA` | `CHAR(36) FOR BIT DATA` |
+| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | SQLite | Snowflake | db2 | ibmi | SAP HANA |
+| ------------------ | -------------------------------------------------------------------- | ----------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------- | ------ | ------------- | ----------------------- | ----------------------- | ------------- |
+| `UUID` | [`UUID`](https://www.postgresql.org/docs/current/datatype-uuid.html) | `CHAR(36) BINARY` | `CHAR(36) BINARY` | [`UNIQUEIDENTIFIER`](https://learn.microsoft.com/en-us/sql/t-sql/data-types/uniqueidentifier-transact-sql?view=sql-server-ver16) | `TEXT` | `VARCHAR(36)` | `CHAR(36) FOR BIT DATA` | `CHAR(36) FOR BIT DATA` | `VARCHAR(36)` |
@@ -266,12 +268,12 @@ The blob datatype allows you to insert data both as strings and buffers. However
-| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | [SQLite][sqlite-datatypes] | Snowflake | db2 | ibmi |
-| ---------------------------------------------------------------------------- | ---------- | ------------ | ------------ | ---------------- | -------------------------- | ------------ | ----------- | ----------- |
-| [`BLOB`](pathname:///api/v7/classes/_sequelize_core.index.unknown.BLOB.html) | `BYTEA` | `BLOB` | `BLOB` | `VARBINARY(MAX)` | `BLOB` | `BLOB` | `BLOB(1M)` | `BLOB(1M)` |
-| `BLOB('tiny')` | `BYTEA` | `TINYBLOB` | `TINYBLOB` | `VARBINARY(256)` | `BLOB` | `TINYBLOB` | `BLOB(255)` | `BLOB(255)` |
-| `BLOB('medium')` | `BYTEA` | `MEDIUMBLOB` | `MEDIUMBLOB` | `VARBINARY(MAX)` | `BLOB` | `MEDIUMBLOB` | `BLOB(16M)` | `BLOB(16M)` |
-| `BLOB('long')` | `BYTEA` | `LONGBLOB` | `LONGBLOB` | `VARBINARY(MAX)` | `BLOB` | `LONGBLOB` | `BLOB(2G)` | `BLOB(2G)` |
+| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | [SQLite][sqlite-datatypes] | Snowflake | db2 | ibmi | SAP HANA |
+| ---------------------------------------------------------------------------- | ---------- | ------------ | ------------ | ---------------- | -------------------------- | ------------ | ----------- | ----------- | -------- |
+| [`BLOB`](pathname:///api/v7/classes/_sequelize_core.index.unknown.BLOB.html) | `BYTEA` | `BLOB` | `BLOB` | `VARBINARY(MAX)` | `BLOB` | `BLOB` | `BLOB(1M)` | `BLOB(1M)` | `BLOB` |
+| `BLOB('tiny')` | `BYTEA` | `TINYBLOB` | `TINYBLOB` | `VARBINARY(256)` | `BLOB` | `TINYBLOB` | `BLOB(255)` | `BLOB(255)` | `BLOB` |
+| `BLOB('medium')` | `BYTEA` | `MEDIUMBLOB` | `MEDIUMBLOB` | `VARBINARY(MAX)` | `BLOB` | `MEDIUMBLOB` | `BLOB(16M)` | `BLOB(16M)` | `BLOB` |
+| `BLOB('long')` | `BYTEA` | `LONGBLOB` | `LONGBLOB` | `VARBINARY(MAX)` | `BLOB` | `LONGBLOB` | `BLOB(2G)` | `BLOB(2G)` | `BLOB` |
@@ -297,10 +299,10 @@ The `DataTypes.JSON` data type is only supported for SQLite, MySQL, MariaDB and
-| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | [SQLite][sqlite-datatypes] | Snowflake | db2 | ibmi |
-| ------------------ | ----------------------------------------------------------------- | --------------------------------------------------- | ----------------------------------------------------------- | --------------- | -------------------------- | --------- | --- | ---- |
-| `JSON` | [`JSON`](https://www.postgresql.org/docs/9.4/datatype-json.html) | [`JSON`](https://mariadb.com/kb/en/json-data-type/) | [`JSON`](https://dev.mysql.com/doc/refman/8.0/en/json.html) | `NVARCHAR(MAX)` | `TEXT` | ❌ | ❌ | ❌ |
-| `JSONB` | [`JSONB`](https://www.postgresql.org/docs/9.4/datatype-json.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | [SQLite][sqlite-datatypes] | Snowflake | db2 | ibmi | SAP HANA |
+| ------------------ | ----------------------------------------------------------------- | --------------------------------------------------- | ----------------------------------------------------------- | --------------- | -------------------------- | --------- | --- | ---- | ---------------- |
+| `JSON` | [`JSON`](https://www.postgresql.org/docs/9.4/datatype-json.html) | [`JSON`](https://mariadb.com/kb/en/json-data-type/) | [`JSON`](https://dev.mysql.com/doc/refman/8.0/en/json.html) | `NVARCHAR(MAX)` | `TEXT` | ❌ | ❌ | ❌ | `NVARCHAR(5000)` |
+| `JSONB` | [`JSONB`](https://www.postgresql.org/docs/9.4/datatype-json.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
@@ -327,15 +329,15 @@ SQL `NULL` value.
-| Sequelize DataType | PostgreSQL | [MariaDB](https://mariadb.com/kb/en/geometry-types/) | [MySQL](https://dev.mysql.com/doc/refman/8.0/en/spatial-type-overview.html) | MSSQL | SQLite | Snowflake | db2 | ibmi |
-| -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ---------------------------------------------------- | --------------------------------------------------------------------------- | ----- | ------ | --------- | --- | ---- |
-| [`GEOMETRY`](pathname:///api/v7/classes/_sequelize_core.index.unknown.GEOMETRY.html) | [`GEOMETRY`](https://postgis.net/workshops/postgis-intro/geometries.html) | `GEOMETRY` | `GEOMETRY` | ❌ | ❌ | ❌ | ❌ | ❌ |
-| `GEOMETRY('POINT')` | `GEOMETRY(POINT)` | `POINT` | `POINT` | ❌ | ❌ | ❌ | ❌ | ❌ |
-| `GEOMETRY('POINT', 4326)` | `GEOMETRY(POINT,4326)` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
-| `GEOMETRY('POLYGON')` | `GEOMETRY(POLYGON)` | `POLYGON` | `POLYGON` | ❌ | ❌ | ❌ | ❌ | ❌ |
-| `GEOMETRY('LINESTRING')` | `GEOMETRY(LINESTRING)` | `LINESTRING` | `LINESTRING` | ❌ | ❌ | ❌ | ❌ | ❌ |
-| [`GEOGRAPHY`](pathname:///api/v7/classes/_sequelize_core.index.unknown.GEOGRAPHY.html) | [`GEOGRAPHY`](https://postgis.net/workshops/postgis-intro/geography.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
-| `HSTORE` | [`HSTORE`](https://www.postgresql.org/docs/9.1/hstore.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| Sequelize DataType | PostgreSQL | [MariaDB](https://mariadb.com/kb/en/geometry-types/) | [MySQL](https://dev.mysql.com/doc/refman/8.0/en/spatial-type-overview.html) | MSSQL | SQLite | Snowflake | db2 | ibmi | SAP HANA |
+| -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ---------------------------------------------------- | --------------------------------------------------------------------------- | ----- | ------ | --------- | --- | ---- | -------- |
+| [`GEOMETRY`](pathname:///api/v7/classes/_sequelize_core.index.unknown.GEOMETRY.html) | [`GEOMETRY`](https://postgis.net/workshops/postgis-intro/geometries.html) | `GEOMETRY` | `GEOMETRY` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `GEOMETRY('POINT')` | `GEOMETRY(POINT)` | `POINT` | `POINT` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `GEOMETRY('POINT', 4326)` | `GEOMETRY(POINT,4326)` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `GEOMETRY('POLYGON')` | `GEOMETRY(POLYGON)` | `POLYGON` | `POLYGON` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `GEOMETRY('LINESTRING')` | `GEOMETRY(LINESTRING)` | `LINESTRING` | `LINESTRING` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| [`GEOGRAPHY`](pathname:///api/v7/classes/_sequelize_core.index.unknown.GEOGRAPHY.html) | [`GEOGRAPHY`](https://postgis.net/workshops/postgis-intro/geography.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `HSTORE` | [`HSTORE`](https://www.postgresql.org/docs/9.1/hstore.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
@@ -462,12 +464,12 @@ User.init({
-| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | SQLite | Snowflake | db2 | ibmi |
-| ------------------ | ------------------------------------------------------------------------ | ------- | ----- | ----- | ------ | --------- | --- | ---- |
-| `CIDR` | [`CIDR`](https://www.postgresql.org/docs/11/datatype-net-types.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
-| `INET` | [`INET`](https://www.postgresql.org/docs/11/datatype-net-types.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
-| `MACADDR` | [`MACADDR`](https://www.postgresql.org/docs/11/datatype-net-types.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
-| `MACADDR8` | [`MACADDR8`](https://www.postgresql.org/docs/11/datatype-net-types.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | SQLite | Snowflake | db2 | ibmi | SAP HANA |
+| ------------------ | ------------------------------------------------------------------------ | ------- | ----- | ----- | ------ | --------- | --- | ---- | -------- |
+| `CIDR` | [`CIDR`](https://www.postgresql.org/docs/11/datatype-net-types.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `INET` | [`INET`](https://www.postgresql.org/docs/11/datatype-net-types.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `MACADDR` | [`MACADDR`](https://www.postgresql.org/docs/11/datatype-net-types.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `MACADDR8` | [`MACADDR8`](https://www.postgresql.org/docs/11/datatype-net-types.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
@@ -536,3 +538,7 @@ to request the addition of a new built-in DataType.
[sqlite-datatypes]: https://www.sqlite.org/stricttables.html
[snowflake-numeric]: https://docs.snowflake.com/en/sql-reference/data-types-numeric.html
[snowflake-temporal]: https://docs.snowflake.com/en/sql-reference/data-types-datetime.html
+[hana-char]: https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-sql-reference-guide/character-string-data-types
+[hana-boolean]: https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-sql-reference-guide/boolean-data-type
+[hana-lob]: https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-sql-reference-guide/large-object-lob-data-types
+[hana-temporal]: https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-sql-reference-guide/datetime-data-types
diff --git a/docs/querying/select-in-depth.md b/docs/querying/select-in-depth.md
index 92b6ab098..761b85e7b 100644
--- a/docs/querying/select-in-depth.md
+++ b/docs/querying/select-in-depth.md
@@ -436,6 +436,7 @@ MSSQL: 'https://learn.microsoft.com/en-us/sql/relational-databases/performance/j
Snowflake: 'https://docs.snowflake.com/en/sql-reference/constructs/join',
db2: 'https://www.ibm.com/docs/sr/db2-for-zos/11?topic=table-right-outer-join',
ibmi: 'https://www.ibm.com/docs/en/i/7.4?topic=table-right-outer-join',
+hana: 'https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-sql-reference-guide/select-statement-data-manipulation',
}}
/>
diff --git a/docusaurus.config.js b/docusaurus.config.js
index ab105198e..b62a5e900 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -8,7 +8,7 @@ const lightCodeTheme = require('prism-react-renderer').themes.github;
const config = {
title: 'Sequelize',
tagline:
- 'Sequelize is a modern TypeScript and Node.js ORM for Oracle, Postgres, MySQL, MariaDB, SQLite and SQL Server, and more. Featuring solid transaction support, relations, eager and lazy loading, read replication and more.',
+ 'Sequelize is a modern TypeScript and Node.js ORM for Oracle, Postgres, MySQL, MariaDB, SQLite, SQL Server and SAP HANA, and more. Featuring solid transaction support, relations, eager and lazy loading, read replication and more.',
url: 'https://sequelize.org',
baseUrl: '/',
onBrokenLinks: 'throw',
diff --git a/src/pages/releases.mdx b/src/pages/releases.mdx
index a549d7829..91cae0422 100644
--- a/src/pages/releases.mdx
+++ b/src/pages/releases.mdx
@@ -164,6 +164,16 @@ In Sequelize 6, Oracle Database requires the installation of the [node-oracledb]
[Oracle Database]: https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
[node-oracledb]: https://www.npmjs.com/package/oracledb
+## SAP HANA Support Table
+
+| Sequelize | [SAP HANA] |
+| ----------- | ------------- |
+| 7 (alpha) | all |
+| 6 (current) | not available |
+
+[SAP HANA]: https://www.sap.com/products/data-cloud/hana.html
+[node-hana-client]: https://www.npmjs.com/package/@sap/hana-client
+
[^1]: Connector libraries do not need to be installed manually anymore.
[^⚠️2]: Support for mariadb 3 has not been completed yet https://github.com/sequelize/sequelize/pull/14187
diff --git a/src/utils/dialects.ts b/src/utils/dialects.ts
index dc33896aa..337218cc0 100644
--- a/src/utils/dialects.ts
+++ b/src/utils/dialects.ts
@@ -7,4 +7,5 @@ export const SUPPORTED_DIALECTS = new Set([
'Snowflake',
'db2',
'ibmi',
+ 'hana',
]);