将RFC3339时间存储在MySQL数据库中时的最佳做法是什么?

时间:2016-10-11 23:53:27

标签: mysql go time unix-timestamp google-cloud-sql

我在Google Cloud Datastore NoSQL数据库中有数据。此数据库中的对象包含type Time.time字段,特别是RFC3339格式(YYYY-MM-DDThh:mm:ssTZD)。我正在将这些数据转移到Google Cloud SQL数据库中,我想知道将RFC3339格式的时间数据存储在MySQL数据库中时最佳做法是什么。

This post强烈建议如下:

  

所有日期和时间列应为INT UNSIGNED NOT NULL,并且应为   以UTC格式存储Unix时间戳。

那么,我应该只使用Golang's func (t Time) Unix()并以这种方式存储数据吗?存储数据有哪些替代方法?如果我不听从海报的建议,我会遇到什么样的问题?

1 个答案:

答案 0 :(得分:2)

如果您正在使用parseTime=true,则可以要求驱动程序自动将DATE和DATETIME扫描到time.Time,方法是将db, _ := sql.Open("mysql", "root:@/?parseTime=true") var myTime time.Time row, err := db.QueryRow("SELECT current_timestamp()") row.Scan(&myTime) fmt.Println(myTime) 添加到您的连接字符串中。

请参阅https://github.com/go-sql-driver/mysql#timetime-support

示例代码:

string = '9x3420aAbD8'