diff --git a/dialects/mssql.go b/dialects/mssql.go index b3517fb9..1c56e7a4 100644 --- a/dialects/mssql.go +++ b/dialects/mssql.go @@ -317,10 +317,10 @@ func (db *mssql) SQLType(c *schemas.Column) string { if c.Length > 3 { res = "DATETIME2" } else { - res = schemas.DateTime + return schemas.DateTime } case schemas.TimeStampz: - res = "DATETIME2" + res = "DATETIMEOFFSET" c.Length = 7 case schemas.MediumInt, schemas.TinyInt, schemas.SmallInt, schemas.UnsignedMediumInt, schemas.UnsignedTinyInt, schemas.UnsignedSmallInt: res = schemas.Int @@ -504,6 +504,10 @@ func (db *mssql) GetColumns(queryer core.Queryer, ctx context.Context, tableName } case "DATETIME2": col.SQLType = schemas.SQLType{Name: schemas.DateTime, DefaultLength: 7, DefaultLength2: 0} + col.Length = scale + case "DATETIME": + col.SQLType = schemas.SQLType{Name: schemas.DateTime, DefaultLength: 3, DefaultLength2: 0} + col.Length = scale case "IMAGE": col.SQLType = schemas.SQLType{Name: schemas.VarBinary, DefaultLength: 0, DefaultLength2: 0} case "NCHAR": diff --git a/dialects/time.go b/dialects/time.go index 209023b7..f0bbb765 100644 --- a/dialects/time.go +++ b/dialects/time.go @@ -31,16 +31,20 @@ func FormatColumnTime(dialect Dialect, dbLocation *time.Location, col *schemas.C t = t.In(tmZone) switch col.SQLType.Name { - case schemas.Time: - s := t.Format("2006-01-02 15:04:05") // time.RFC3339 - return s[11:19], nil case schemas.Date: return t.Format("2006-01-02"), nil - case schemas.DateTime, schemas.TimeStamp: + case schemas.Time: + var layout = "15:04:05" if col.Length > 0 { - return t.Format("2006-01-02 15:04:05." + strings.Repeat("0", col.Length)), nil + layout += "." + strings.Repeat("0", col.Length) } - return t.Format("2006-01-02 15:04:05"), nil + return t.Format(layout), nil + case schemas.DateTime, schemas.TimeStamp: + var layout = "2006-01-02 15:04:05" + if col.Length > 0 { + layout += "." + strings.Repeat("0", col.Length) + } + return t.Format(layout), nil case schemas.Varchar: return t.Format("2006-01-02 15:04:05"), nil case schemas.TimeStampz: diff --git a/integrations/engine_test.go b/integrations/engine_test.go index b5ecb2c2..550d10aa 100644 --- a/integrations/engine_test.go +++ b/integrations/engine_test.go @@ -116,6 +116,8 @@ func TestDump(t *testing.T) { os.Remove(fp) assert.NoError(t, testEngine.DumpAllToFile(fp)) + //panic("") + assert.NoError(t, PrepareEngine()) sess := testEngine.NewSession()