Golang 如何获取表中datetime字段

5,542 阅读1分钟

查询MySQL数据表中的datetime类型字段时,通常涉及时间类型转换的问题。

实际业务中,有两类转换。假定在数据表中字段createdlogin_timedatetime类型,在Go中我们需要转换成,

  1. string类型(Y-m-d H:i:s)的时间
  2. int64类型(timestamp)的时间
/**
 * 1. 配置数据库日期转换
 * loc 定义数据库所在时区 东八区
 * parseTime 转换日期类型
**/
database, err = sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/aa?charset=utf8&loc="+ url.QueryEscape("Asia/Shanghai") +"&parseTime=true")

var TaskCreated time.Time // 2. 定义一个Time类型的变量

getTasksql = "select created from task;"
rows, err := database.Query(getTasksql)
for rows.Next() {
    err := rows.Scan(&TaskCreated)
    // 3. 将Time类型的时间格式化成`string`类型(Y-m-d H:i:s)
    TaskCreated.Format("2006-01-02 15:04:05")
    // 或3. 将Time类型的时间格式化成`int64`类型(timestamp)
    TaskCreated.Unix()
}