mirror of
https://github.com/astaxie/beego.git
synced 2024-11-22 10:10:54 +00:00
orm fix sqlite3 time convert
This commit is contained in:
parent
1d44018128
commit
89c03870c8
21
orm/db.go
21
orm/db.go
@ -97,11 +97,7 @@ func (d *dbBase) collectFieldValue(mi *modelInfo, fi *fieldInfo, ind reflect.Val
|
||||
case TypeDateField, TypeDateTimeField:
|
||||
value = field.Interface()
|
||||
if t, ok := value.(time.Time); ok {
|
||||
if fi.fieldType == TypeDateField {
|
||||
d.ins.TimeToDB(&t, DefaultTimeLoc)
|
||||
} else {
|
||||
d.ins.TimeToDB(&t, tz)
|
||||
}
|
||||
value = t
|
||||
}
|
||||
default:
|
||||
@ -130,11 +126,7 @@ func (d *dbBase) collectFieldValue(mi *modelInfo, fi *fieldInfo, ind reflect.Val
|
||||
case TypeDateField, TypeDateTimeField:
|
||||
if fi.auto_now || fi.auto_now_add && insert {
|
||||
tnow := time.Now()
|
||||
if fi.fieldType == TypeDateField {
|
||||
d.ins.TimeToDB(&tnow, DefaultTimeLoc)
|
||||
} else {
|
||||
d.ins.TimeToDB(&tnow, tz)
|
||||
}
|
||||
value = tnow
|
||||
if fi.isFielder {
|
||||
f := field.Addr().Interface().(Fielder)
|
||||
@ -895,18 +887,17 @@ setValue:
|
||||
t time.Time
|
||||
err error
|
||||
)
|
||||
if fi.fieldType == TypeDateField {
|
||||
if len(s) >= 19 {
|
||||
s = s[:19]
|
||||
t, err = time.ParseInLocation(format_DateTime, s, tz)
|
||||
} else {
|
||||
if len(s) > 10 {
|
||||
s = s[:10]
|
||||
}
|
||||
t, err = time.ParseInLocation(format_Date, s, DefaultTimeLoc)
|
||||
} else {
|
||||
if len(s) > 19 {
|
||||
s = s[:19]
|
||||
t, err = time.ParseInLocation(format_Date, s, tz)
|
||||
}
|
||||
t, err = time.ParseInLocation(format_DateTime, s, tz)
|
||||
t = t.In(DefaultTimeLoc)
|
||||
}
|
||||
|
||||
if err != nil && s != "0000-00-00" && s != "0000-00-00 00:00:00" {
|
||||
tErr = err
|
||||
goto end
|
||||
|
@ -50,9 +50,34 @@ outFor:
|
||||
|
||||
switch v := arg.(type) {
|
||||
case []byte:
|
||||
case string:
|
||||
if fi != nil {
|
||||
if fi.fieldType == TypeDateField || fi.fieldType == TypeDateTimeField {
|
||||
var t time.Time
|
||||
var err error
|
||||
if len(v) >= 19 {
|
||||
s := v[:19]
|
||||
t, err = time.ParseInLocation(format_DateTime, s, DefaultTimeLoc)
|
||||
} else {
|
||||
s := v
|
||||
if len(v) > 10 {
|
||||
s = v[:10]
|
||||
}
|
||||
t, err = time.ParseInLocation(format_Date, s, DefaultTimeLoc)
|
||||
}
|
||||
if err == nil {
|
||||
if fi.fieldType == TypeDateField {
|
||||
v = t.In(tz).Format(format_Date)
|
||||
} else {
|
||||
v = t.In(tz).Format(format_DateTime)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
arg = v
|
||||
case time.Time:
|
||||
if fi != nil && fi.fieldType == TypeDateField {
|
||||
arg = v.In(DefaultTimeLoc).Format(format_Date)
|
||||
arg = v.In(tz).Format(format_Date)
|
||||
} else {
|
||||
arg = v.In(tz).Format(format_DateTime)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user