我已将此数据时间字段存储在我的数据库(mySQL)上,last_activity:2017-06-12 11:07:09
我在我的OpenDB上使用参数parseTime=True
问题是输出是:last activity: {63632862429 0 <nil>}
而不是2017-06-12 11:07:09
我做错了什么?
感谢
type DateType time.Time
type User struct {
LastActivity DateType
}
func (stUser *User) GetUserDataByLogin(login string) {
db := OpenDB()
defer db.Close()
// Test the connection to the database
err := db.Ping()
checkErr(err)
err = db.QueryRow("SELECT last_activity FROM users WHERE login = ?", login).Scan(&stUser.LastActivity)
if err != nil {
if err == sql.ErrNoRows {
// there were no rows, but otherwise no error occurred
} else {
log.Fatal(err)
}
}
fmt.Println("last activity:", stUser.LastActivity)
}
答案 0 :(得分:1)
您必须声明DateType.String()
这样的方法:
func (t DateType) String() string {
return time.Time(t).String()
}
声明的类型不会继承绑定到现有类型的任何方法
答案 1 :(得分:0)
time.Time
是可以为空的类型。你必须预料到这一点并使用像pq包和NullTime
类型而不是time.Time
这样的思考。
cf:https://godoc.org/github.com/lib/pq#NullTime
pq.NullTime
是一个结构:
type NullTime struct {
Time time.Time
Valid bool // Valid is true if Time is not NULL
}
如果Valid
为True
,那么您将在Time
中获得结果。