Fix timesatmp #2021
|
@ -320,7 +320,7 @@ func (db *mssql) SQLType(c *schemas.Column) string {
|
||||||
res = schemas.DateTime
|
res = schemas.DateTime
|
||||||
}
|
}
|
||||||
case schemas.TimeStampz:
|
case schemas.TimeStampz:
|
||||||
res = "DATETIMEOFFSET"
|
res = "DATETIME2"
|
||||||
c.Length = 7
|
c.Length = 7
|
||||||
case schemas.MediumInt, schemas.TinyInt, schemas.SmallInt, schemas.UnsignedMediumInt, schemas.UnsignedTinyInt, schemas.UnsignedSmallInt:
|
case schemas.MediumInt, schemas.TinyInt, schemas.SmallInt, schemas.UnsignedMediumInt, schemas.UnsignedTinyInt, schemas.UnsignedSmallInt:
|
||||||
res = schemas.Int
|
res = schemas.Int
|
||||||
|
@ -502,6 +502,8 @@ func (db *mssql) GetColumns(queryer core.Queryer, ctx context.Context, tableName
|
||||||
col.Length /= 2
|
col.Length /= 2
|
||||||
col.Length2 /= 2
|
col.Length2 /= 2
|
||||||
}
|
}
|
||||||
|
case "DATETIME2":
|
||||||
|
col.SQLType = schemas.SQLType{Name: schemas.DateTime, DefaultLength: 7, DefaultLength2: 0}
|
||||||
case "IMAGE":
|
case "IMAGE":
|
||||||
col.SQLType = schemas.SQLType{Name: schemas.VarBinary, DefaultLength: 0, DefaultLength2: 0}
|
col.SQLType = schemas.SQLType{Name: schemas.VarBinary, DefaultLength: 0, DefaultLength2: 0}
|
||||||
case "NCHAR":
|
case "NCHAR":
|
||||||
|
|
|
@ -571,25 +571,51 @@ func TestDeletedInt64(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTimestamp(t *testing.T) {
|
func TestTimestamp(t *testing.T) {
|
||||||
assert.NoError(t, PrepareEngine())
|
{
|
||||||
|
assert.NoError(t, PrepareEngine())
|
||||||
|
|
||||||
type TimestampStruct struct {
|
type TimestampStruct struct {
|
||||||
Id int64
|
Id int64
|
||||||
InsertTime time.Time `xorm:"DATETIME(6)"`
|
InsertTime time.Time `xorm:"DATETIME(6)"`
|
||||||
|
}
|
||||||
|
|
||||||
|
assertSync(t, new(TimestampStruct))
|
||||||
|
|
||||||
|
var d1 = TimestampStruct{
|
||||||
|
InsertTime: time.Now(),
|
||||||
|
}
|
||||||
|
cnt, err := testEngine.Insert(&d1)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 1, cnt)
|
||||||
|
|
||||||
|
var d2 TimestampStruct
|
||||||
|
has, err := testEngine.ID(d1.Id).Get(&d2)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, has)
|
||||||
|
assert.EqualValues(t, formatTime(d1.InsertTime, 6), formatTime(d2.InsertTime, 6))
|
||||||
}
|
}
|
||||||
|
|
||||||
assertSync(t, new(TimestampStruct))
|
{
|
||||||
|
assert.NoError(t, PrepareEngine())
|
||||||
|
|
||||||
var d1 = TimestampStruct{
|
type TimestampzStruct struct {
|
||||||
InsertTime: time.Now(),
|
Id int64
|
||||||
|
InsertTime time.Time `xorm:"TIMESTAMPZ"`
|
||||||
|
}
|
||||||
|
|
||||||
|
assertSync(t, new(TimestampzStruct))
|
||||||
|
|
||||||
|
var d3 = TimestampzStruct{
|
||||||
|
InsertTime: time.Now(),
|
||||||
|
}
|
||||||
|
cnt, err := testEngine.Insert(&d3)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 1, cnt)
|
||||||
|
|
||||||
|
var d4 TimestampzStruct
|
||||||
|
has, err := testEngine.ID(d3.Id).Get(&d4)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, has)
|
||||||
|
assert.EqualValues(t, formatTime(d3.InsertTime, 6), formatTime(d4.InsertTime, 6))
|
||||||
}
|
}
|
||||||
cnt, err := testEngine.Insert(&d1)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.EqualValues(t, 1, cnt)
|
|
||||||
|
|
||||||
var d2 TimestampStruct
|
|
||||||
has, err := testEngine.ID(d1.Id).Get(&d2)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.True(t, has)
|
|
||||||
assert.EqualValues(t, formatTime(d1.InsertTime, 6), formatTime(d2.InsertTime, 6))
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user