我想将UnixNano() int64时间戳转换回time.Time{}。
退一步,这是一个更大的问题。
我们有一个带时间戳的数据库,我们使用这些时间戳来提取条目。在纳米时代,永远不应该有重复的时间戳。该数据库是一个嵌入式SQLite3数据库(通过“github.com/mattn/go-sqlite3”驱动程序),其中的标记保存在INTEGER列中。我们使用数字值进行一些排序和过滤,以选择子句的形式和几个视图中进行。
因此,当我们将整数绑定到我们准备好的语句时,如:
INSERT INTO "event" ("timestamp", "command", "data") VALUES (?, ?, ?)
我们绑定time.Now()。UnixNano()。
然而,当我尝试将项目转换为数据结构时,我发现我无法准确地获取UnixNano时间并将其重新组合回time.Time {}结构。
他们从不匹配。
我该怎么做?
答案 0 :(得分:12)
t1 := time.Now()
fmt.Println(t1, t1.UnixNano())
t2 := time.Unix(0, t1.UnixNano())
fmt.Println(t2, t2.UnixNano())
给你
2009-11-10 23:00:00 +0000 UTC 1257894000000000000
2009-11-10 23:00:00 +0000 UTC 1257894000000000000
http://play.golang.org/p/Q68IaR9zPK
BTW,你确定保存到数据库的整数值没有被截断(例如可以存储int64)吗?