2017-06-12 55 views
0

我已經保存在我的數據庫(MySQL的)這個領域DATATIME,last_activity:2017-06-12 11:07:09檢索日期時間從MySQL中了time.time在golang

即時通訊使用的帕拉姆parseTime=True我OpenDB

的問題是,輸出是: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是一個空類型。你必須預見到,並使用像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得到的結果。

0

您必須聲明DateType.String()方法是這樣的:

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

Language Specification

聲明類型不繼承綁定到現有類型

任何方法