一、SQL SERVER與MySQL資料儲存的差異

1、SQL SERVER中的datetime,保留到微秒(秒後小數點3位),而mysql僅保留到秒,轉換後是否會影響業務,如果影響,需要新增一個欄位專門來儲存微秒或者毫秒,雖然mysql中沒有時間資料型別的精度到達微秒或者毫秒,但是mysql提供對微秒的相關處理函式microsecond、extract跟date_format

2、MySQL使用tinyint代替SQL SERVER的bit

3、自增處理,mysql的自增步長跟增量值是整個例項統一的,不能每個表格動態修改,所以這裡在轉化的過程中,為auto_increment,根據例項的設定來處理

二、SQL SERVER與MySQL資料型別的對應關係如圖

ID SQL SERVER MySQL Description
1 bigint bigint
2 binary binary
3 bit tinyint SQL SERVER的bit型別,對於零,識別為False,非零值識別為True。
MySQL中沒有指定的bool型別,一般都使用tinyint來代替
4 char char
5 date date
6 datetime datetime 注意,mssql的保留到微秒(秒後小數點3位),而mysql僅保留到秒
7 datetime2 datetime 注意,mssql的保留到微秒(秒後小數點7位),而mysql僅保留到秒
8 datetimeoffset datetime 注意,mssql的保留時區,這個需要程式自己轉換
mssql的保留到微秒(秒後小數點7位),而mysql僅保留到秒
9 decimal decimal
10 float float
11 int int
12 money float 預設轉換為decimal(19,4)
13 nchar char SQL SERVER轉MySQL按正常位元組數轉就可以
14 ntext text
15 numeric decimal
16 nvarchar varchar
17 real float
18 smalldatetime datetime
19 smallint smallint
20 smallmoney float 預設轉換為decimal(10,4)
21 text text
22 time time 注意,mssql的保留到秒後小數點8位,而mysql僅保留到秒
23 timestamp timestamp
24 tinyint tinyint
25 uniqueidentifier varchar(40) 對應mysql的UUID(),設定為文字型別即可。
26 varbinary varbinary
27 varchar varchar
28 xml text mysql不支援xml,修改為text