Vitaly Isaev
`BOOL` | `UINT8` | `bool` | :white_check_mark: `Bool` | :white_check_mark: `boolean`, `bool` (1 byte) | :white_check_mark: `bool` (`tinyint(1)`) | :white_check_mark: `bit` | - |
`INT8` | `INT8` | `int8` | :white_check_mark: `Int8` | - | :white_check_mark: `tinyint` | :white_check_mark: `tinyint` | - |
`UINT8` | `UINT8` | `uint8` | :white_check_mark: `UInt8` | - | :white_check_mark: `tinyint unsigned` | - | - |
`INT16` | `INT16` | `int16` | :white_check_mark: `Int16` | :white_check_mark: `smallint`, `int2`, `smallserial`, `serial2` | :white_check_mark: `smallint` | :white_check_mark: `smallint` | - |
`UINT16` | `UINT16` | `uint16` | :white_check_mark: `UInt16` | - | :white_check_mark: `smallint unsigned` | - | - |
`INT32` | `INT32` | `int32` | :white_check_mark: `Int32` | :white_check_mark: `integer`, `int`, `int4`, `serial`, `serial4` | :white_check_mark: `mediumint`, `int` | :white_check_mark: `int` | - |
`UINT32` | `UINT32` | `uint32` | :white_check_mark: `UInt32` | - | :white_check_mark: `mediumint unsigned`, `int unsigned` | - | - |
`INT64` | `INT64` | `int64` | :white_check_mark: `Int64` | :white_check_mark: `bigint`, `int8`, `bigserial`, `serial8` | :white_check_mark: `bigint` | :white_check_mark: `bigint` | :white_check_mark: `NUMBER` |
`UINT64` | `UINT64` | `uint64` | :white_check_mark: `UInt64` | - | :white_check_mark: `bigint unsigned` | -` | - |
`FLOAT` | `FLOAT` | `float32` | :white_check_mark: `Float32` | :white_check_mark: `real`, `float4` | :white_check_mark: `float`, `real` | :white_check_mark: `real` | :x: `BINARY_FLOAT` |
`DOUBLE` | `DOUBLE` | `float64` | :white_check_mark: `Float64` | :white_check_mark: `double precision`, `float8` | :white_check_mark: `double [precision]` | :white_check_mark: `float` | :white_check_mark: `BINARY_DOUBLE` |
`DATE` (`uint16`, days since epoch) | `UINT16` | `time.Time` | :white_check_mark: `Date`, `Date32` | :white_check_mark: `date` (`int32`, just date without time, since `4713 BC` till `5874897 AD`) | :white_check_mark: `date` (since `1000-01-01` till `9999-12-31`) | :white_check_mark: `date` | - |
`DATETIME` (`uint32`, seconds since epoch) | `UINT32` | `time.Time` | :white_check_mark: `DateTime` | - | - | :white_check_mark: `smalldatetime` | :white_check_mark: `DATE` |
`TIMESTAMP` (`uint64`, microseconds since epoch) | `UINT64` | `time.Time` | :white_check_mark: `DateTime64` (`int64`, arbitrary units) | :white_check_mark: `timestamp[(p)][without time zone]` (`int64`, microseconds since epoch) | :white_check_mark: `timestamp` (since `1970-01-01 00:00:01` till `2038-01-19 03:14:07`), :white_check_mark: `datetime` (since `1000-01-01 00:00:00` till `9999-12-31 23:59:59`) | :white_check_mark: `datetime`, `datetime2` | :white_check_mark: `TIMESTAMP`, `TIMESTAMP WITH TIMEZONE`, `TIMESTAMP WITH LOCAL TIMEZONE` (precision till microseconds) |
`STRING` (arbitrary binary data) | `BINARY` | `[]byte` | :white_check_mark: `String`, `FixedString` | :white_check_mark: `bytea` | :white_check_mark: `tinyblob`, `blob`, `mediumblob`, `longblob`, `tinytext`, `text`, `mediumtext`, `longtext` | :white_check_mark: `binary`, `varbinary`, `image` | :white_check_mark: `RAW`, `LONG RAW`, `BLOB` |
`UTF8` | `STRING` | `string` | - | :white_check_mark: `character [(n)]`, `character varying [(n)]`, `text` | :white_check_mark: `char`, `varchar`, `binary`, `varbinary` | :white_check_mark: `char`, `varchar`, `text`, `nchar`, `nvarchar`, `ntext` | :white_check_mark: `VARCHAR2`, `NVARCHAR2`, `CHAR`, `NCHAR`, `CLOB`, `NCLOB`, `LONG` |
`JSON` | `STRING` | `string` | :white_check_mark: `JSON` | :white_check_mark: `json` | :white_check_mark: `json` | - | :white_check_mark: `JSON` |