package main
import (
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/go-xorm/xorm"
"log"
"time"
)
var engine *xorm.Engine
type User struct {
Name string `xorm:"varchar(25) 'usr_name'"`
Id int `xorm:"pk 'id' autoincr"`
CreatedAt time.Time `xorm:"created"`
}
type User1 struct {
Id int `xorm:"pk 'id' autoincr"`
Name string `xorm:"varchar(25) 'usr_name'"`
CreatedAt int64 `xorm:"created"`
}
func main() {
var err error
engine, err = xorm.NewEngine("mysql", "root:123456@/test")
if err != nil {
log.Fatal(err)
return
}
err = engine.CreateTables(User{})
if err != nil {
log.Fatal(err)
return
}
err = engine.CreateTables(User1{})
if err != nil {
log.Fatal(err)
return
}
/*在Insert()或InsertOne()方法被调用时,
created标记的字段将会被自动更新为当前时间或者当前时间的秒数(对应为time.Unix()),如下所示:*/
var user User
user.Name="userName"
_, err = engine.Insert(&user)
if err!=nil{
log.Fatal(err)
return
}
fmt.Println("本地时区该数据建立时间:",user.CreatedAt)
var user1 User1
user1.Name="user1Name"
_, err =engine.Insert(&user1)
if err!=nil{
log.Fatal(err)
return
}
fmt.Println("本地时区该数据建立时间:",user1.CreatedAt)
/* 默认xorm采用Local时区,所以默认调用的time.Now()会先被转换成对应的时区*/
engine.TZLocation, _ = time.LoadLocation("EST")//美国东部时间
var u User
u.Name="userName"
_, err = engine.Insert(&u)
if err!=nil{
log.Fatal(err)
return
}
fmt.Println("美国西五区时间该数据建立时间:",u.CreatedAt)
var u1 User1
u1.Name="user1Name"
_, err =engine.Insert(&u1)
if err!=nil{
log.Fatal(err)
return
}
fmt.Println("美国西五区时间该数据建立时间:",u1.CreatedAt)
/* 第一次输出:
本地时区该数据建立时间: 2019-05-25 17:43:13.745542 +0800 CST
本地时区该数据建立时间: 1558777393
美国西五区时间该数据建立时间: 2019-05-25 04:43:13.749684 -0500 EST
美国西五区时间该数据建立时间: 1558777393
第二次输出:
本地时区该数据建立时间: 2019-05-25 17:43:48.537048 +0800 CST
本地时区该数据建立时间: 1558777428
美国西五区时间该数据建立时间: 2019-05-25 04:43:48.539141 -0500 EST
美国西五区时间该数据建立时间: 1558777428
*/
}