猿问

struct Time 属性不会从 Go sqlx 库加载

我有一个带有属性时间的结构:


type Basket struct {  

  ...  

  Created_at time.Time `db:"created_at"`

}

时间保存为:


basket.Created_at = time.Now().UTC()

如果我使用 Insert sql 语句保存它,它会在 SQLite3 中很好地节省时间,但是当我使用以下命令选择所需的记录时:


ret_basket := Basket{}

err := database.DB.Get(&ret_basket, "SELECT id, ..., created_at FROM baskets WHERE user_id = ?", some_user_id)

它返回具有正确加载的其他属性的记录,除了ret_basket.Created_at作为0001-01-01 00:00:00 +0000 UTC


有什么建议?


HUWWW
浏览 191回答 1
1回答

FFIVE

Sqlite 没有官方软件包,所以我假设您使用的是https://github.com/mattn/go-sqlite3可能您的问题是created_at数据库中字段声明错误的结果,这应该是DATETIME因为下一个代码在我的机器上运行良好(我已经删除了所有错误检查):package mainimport (    "github.com/jmoiron/sqlx"    _ "github.com/mattn/go-sqlite3"    "log"    "time")type Post struct {    Id      int64     `db:"post_id"`    Created time.Time `db:"created"`}func main() {    db, _ := sqlx.Connect("sqlite3", "post_db.db")    db.MustExec("DROP TABLE IF EXISTS posts; CREATE TABLE posts (post_id INT, created DATETIME);")    p1 := Post{Id: 1, Created: time.Now().UTC()}    p2 := Post{}    tx := db.MustBegin()    tx.NamedExec("INSERT INTO posts (post_id, created) VALUES (:post_id, :created)", &p1)    tx.Commit()    db.Get(&p2, "SELECT post_id, created FROM posts WHERE post_id = $1", p1.Id)    log.Println(p2.Created.Format("2006-01-02"))}
随时随地看视频慕课网APP

相关分类

Go
我要回答