在golang中的time.time中从mysql中检索datetime

时间:2017-06-12 11:49:53

标签: mysql go

我已将此数据时间字段存储在我的数据库(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)

}

2 个答案:

答案 0 :(得分:1)

您必须声明DateType.String()这样的方法:

func (t DateType) String() string {
    return time.Time(t).String()
}

来自Language Specification

  

声明的类型不会继承绑定到现有类型的任何方法

答案 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
}

如果ValidTrue,那么您将在Time中获得结果。