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