Migrating MySQL Data Types
This section explains mappings and differences between MySQL and SQL Server 2008 data types, specific data type handling, and provides solutions for problems related to data types.
Type Mapping
Following are recommended type mappings for converting column data types while migrating columns, subroutines etc.
|
MySql Type |
Sql Server 2008 Mappings |
Remarks |
Alternatives |
|
TINYINT (M) |
tinyint |
M is the number of decimal places in the output for this value. |
tinyint, smallint, int, bigint, numeric(p,s), decimal(p,s), float(p), double precision, real, |
|
TINYINT (1) |
|
|
smallmoney,money |
|
SMALLINT (M) |
smallint |
M is the number of decimal places in the output for this value. |
tinyint, smallint, int, bigint, numeric(p,s), decimal(p,s), float(p), double precision, real, smallmoney, money |
|
MEDIUMINT (M) |
int |
M is the number of decimal places in the output for this value. |
tinyint, smallint, int, bigint, numeric(p,s), decimal(p,s), float(p), double precision, real, smallmoney, money |
|
INT (M) INTEGER (M) |
int |
M is the number of decimal places in the output for this value. |
tinyint, smallint, int, bigint, numeric(p,s), decimal(p,s), float(p), double precision, real, smallmoney, money |
|
BIGINT (M) |
bigint |
M is the number of decimal places in the output for this value. |
tinyint, smallint, int, bigint, numeric(p,s), decimal(p,s), float(p), double precision, real, smallmoney, money |
|
FLOAT (P) |
float(P) |
N/A |
numeric(p,s), decimal(p,s), float(p), double precision, real, smallmoney, money |
|
FLOAT [(P, S)] |
float(24) |
(P,S)” means that values are displayed with up to P digits total, of which S digits may be after the decimal point. MySQL performs rounding when storing values. |
numeric(p,s), decimal(p,s), float(p), double precision, real, smallmoney, money |
|
DATETIME [(D)] |
datetime2 |
MySQL store dates from 0000-00-00 to 9999-12-31. MySQL can store zero-value of year, month, and year. |
smalldatetime,datetime |
|
DATE [(D)] |
date |
|
smalldatetime, datetime, datetime2, date |
|
TIME |
time |
Range is '-838:59:59' to '838:59:59'. |
smalldatetime,datetime, time,varchar,nvarchar |
|
TIMESTAMP |
smalldatetime |
|
datetime, datetime2, rowversion, timestamp, varbinary(8), binary(8) |
|
[NATIONAL] CHAR (N) |
nchar(N) |
Range of N is 0 to 255 characters. |
char, varchar, nchar, nvarchar |
|
TINYTEXT |
nvarchar(255) |
None |
char, varchar, nchar, nvarchar |
|
MEDIUMTEXT |
nvarchar(max) |
None |
char, varchar, nchar, nvarchar, varchar(max), nvarchar(max) |
|
BINARY (N) |
binary(N) |
None |
binary, varbinary, char, varchar, nchar, nvarchar |
|
TINYBLOB |
varbinary(255) |
None |
binary, varbinary, varbinary(max) |
|
BLOB (N) |
varbinary (N | max) |
A BLOB column with a maximum length of 65,535 bytes. |
binary, varbinary, varbinary(max) |

Join the conversation! Your thoughts help the community grow.