2016-10-11 4 views
1

У меня есть данные в базе данных Google Data Datastore NoSQL. Объекты в этой базе данных содержат поля type Time.time, в частности формат RFC3339 (YYYY-MM-DDThh: mm: ssTZD). Я перемещаю некоторые из этих данных в базу данных Google Cloud SQL, и мне интересно, что считается лучшей практикой при хранении данных в формате RFC3339 в базе данных MySQL.Какова наилучшая практика при хранении RFC3339 в базе данных MySQL?

This post настоятельно предлагает следующее:

Все даты и времени столбцы должны быть INT UNSIGNED NOT NULL и должен магазин UNIX-метка времени в формате UTC.

Итак, должен ли я использовать Golang's func (t Time) Unix() и хранить данные таким образом? Каковы альтернативные подходы к хранению данных? Какие проблемы могут возникнуть, если я не буду прислушиваться к советам плаката?

ответ

2

Если вы используете go-sql-driver/mysql, вы можете попросить водителя сканировать DATE и DATETIME автоматически на time.Time, добавив parseTime=true к вашей строке подключения.

См https://github.com/go-sql-driver/mysql#timetime-support

Пример кода:

db, _ := sql.Open("mysql", "root:@/?parseTime=true") 

var myTime time.Time 
row, err := db.QueryRow("SELECT current_timestamp()") 

row.Scan(&myTime) 
fmt.Println(myTime) 
Смежные вопросы