SQL Server database, default mapping of time type to DATETIME2

This commit is contained in:
CyJaySong 2023-07-14 17:13:52 +08:00
parent 93ef9bd84a
commit a16551c6e7
2 changed files with 21 additions and 7 deletions

View File

@ -320,11 +320,7 @@ func (db *mssql) SQLType(c *schemas.Column) string {
res += "(MAX)"
}
case schemas.TimeStamp, schemas.DateTime:
if c.Length > 3 {
res = "DATETIME2"
} else {
return schemas.DateTime
}
return "DATETIME2"
case schemas.TimeStampz:
res = "DATETIMEOFFSET"
c.Length = 7

View File

@ -1207,6 +1207,14 @@ func TestInsertNotDeleted(t *testing.T) {
assert.NoError(t, PrepareEngine())
zeroTime := time.Date(1, 1, 1, 0, 0, 0, 0, testEngine.GetTZDatabase())
type TestInsertNotDeletedStructNotRight struct {
ID uint64 `xorm:"'ID' pk autoincr"`
DeletedAt time.Time `xorm:"'DELETED_AT' deleted notnull"`
}
// notnull tag will be ignored
err := testEngine.Sync(new(TestInsertNotDeletedStructNotRight))
assert.NoError(t, err)
type TestInsertNotDeletedStruct struct {
ID uint64 `xorm:"'ID' pk autoincr"`
DeletedAt time.Time `xorm:"'DELETED_AT' deleted"`
@ -1214,12 +1222,22 @@ func TestInsertNotDeleted(t *testing.T) {
assert.NoError(t, testEngine.Sync(new(TestInsertNotDeletedStruct)))
var v1 TestInsertNotDeletedStructNotRight
_, err = testEngine.Insert(&v1)
assert.NoError(t, err)
var v2 TestInsertNotDeletedStructNotRight
has, err := testEngine.Get(&v2)
assert.NoError(t, err)
assert.True(t, has)
assert.Equal(t, v2.DeletedAt.In(testEngine.GetTZDatabase()).Format("2006-01-02 15:04:05"), zeroTime.Format("2006-01-02 15:04:05"))
var v3 TestInsertNotDeletedStruct
_, err := testEngine.Insert(&v3)
_, err = testEngine.Insert(&v3)
assert.NoError(t, err)
var v4 TestInsertNotDeletedStruct
has, err := testEngine.Get(&v4)
has, err = testEngine.Get(&v4)
assert.NoError(t, err)
assert.True(t, has)
assert.Equal(t, v4.DeletedAt.In(testEngine.GetTZDatabase()).Format("2006-01-02 15:04:05"), zeroTime.Format("2006-01-02 15:04:05"))