使用mysql的時(shí)間字段遇到如下兩個(gè)問題
1.使用go-sql-driver來連接mysql數(shù)據(jù)庫,獲取的時(shí)區(qū)默認(rèn)是UTC +0的,與本地的東八區(qū)是有區(qū)別包吝,在業(yè)務(wù)處理中會(huì)出現(xiàn)問題
2.獲取mysql中的日期譬圣,是string類型,需要在代碼中用time.Parse進(jìn)行轉(zhuǎn)化
解決方案:
在連接的dsn中,添加parseTime=true
和loc=Local
分冈,此處的local
可以換為具體的時(shí)區(qū)(Asia/Shanghai)
示例代碼:
package main
import (
"database/sql"
"fmt"
"time"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql",
"bp:123456@tcp(10.13.4.161:3309)/bp_members?parseTime=true&loc=Local")
var myTime time.Time
rows, err := db.Query("SELECT current_timestamp()")
fmt.Println(time.Now())
if rows.Next() {
if err = rows.Scan(&myTime); err != nil {
panic(err)
}
}
fmt.Println(myTime)
}
#運(yùn)行結(jié)果圾另,已經(jīng)一致了
2017-05-27 11:26:32.387955955 +0800 CST
2017-05-27 11:26:32 +0800 CST