golang mysql的字段类型为timestamp xgorm查询的结果如何返回json格式为 yyyy-mm-dd hhiiss。提供一个最优雅最高效的方法
在Golang中,可以使用time.Time类型来表示MySQL的timestamp字段。要将时间格式化为"yyyy-mm-dd hh:ii:ss"的格式,可以使用time.Time的Format方法。下面是一个示例代码,演示了如何使用xgorm查询MySQL的timestamp字段,并将结果以"yyyy-mm-dd hh:ii:ss"的格式返回为JSON。
package main
import (
"encoding/json"
"fmt"
"time"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
type User struct {
ID uint `gorm:"primary_key"`
Name string `json:"name"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"-"`
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
}
func main() {
dsn := "user:password@tcp(localhost:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic(err)
}
var users []User
if err := db.Find(&users).Error; err != nil {
panic(err)
}
for _, user := range users {
user.CreatedAt = user.CreatedAt.Local() // 转换为本地时间
}
jsonBytes, err := json.MarshalIndent(users, "", " ")
if err != nil {
panic(err)
}
fmt.Println(string(jsonBytes))
}
在上面的代码中,我们首先定义了一个User结构体,其中CreatedAt字段的类型为time.Time,用于表示MySQL的timestamp字段。然后,我们使用gorm进行数据库查询,并将查询结果保存在users切片中。
接下来,我们遍历users切片,使用Local()方法将CreatedAt转换为本地时间。然后,我们使用json.MarshalIndent将users切片转换为JSON格式的字节数组。
最后,我们使用fmt.Println打印JSON字符串。
请注意,上述代码中的dsn变量应替换为您自己的MySQL连接字符串
原文地址: https://www.cveoy.top/t/topic/iEvX 著作权归作者所有。请勿转载和采集!