为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
HUWWW 2021-12-07 16:46:12
我有一个带有属性时间的结构: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有什么建议?
查看完整描述

1 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

Sqlite 没有官方软件包,所以我假设您使用的是https://github.com/mattn/go-sqlite3可能您的问题是created_at数据库中字段声明错误的结果,这应该是DATETIME因为下一个代码在我的机器上运行良好(我已经删除了所有错误检查):


package main


import (

    "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"))

}


查看完整回答
反对 回复 2021-12-07
  • 1 回答
  • 0 关注
  • 189 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信