golang

2017-06-12 13 views
0

でtime.timeでのmysqlから日時を取得する私は私のデータベース(MySQLの)このdatatimeフィールド、last_activityに保存されています:2017-06-12 11:07:09golang

イム私のOpenDB上のparam 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

time.TimeはNULLタイプです。あなたはそれを予期して、pqパッケージのような一言とtime.Timeの代わりにNullTimeのタイプを使用しなければなりません。 CFは:その後、Trueある

type NullTime struct { 
    Time time.Time 
    Valid bool // Valid is true if Time is not NULL 
} 

Valid場合はTimeで結果を得ます:https://godoc.org/github.com/lib/pq#NullTime

pq.NullTime構造です。

0

あなたはこのようDateType.String()メソッドを宣言する必要があります。

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

Language Specificationから:

既存の型

にバインドされたすべてのメソッドを継承しません宣言された型