go-sql-driverでDateTimeを扱う
デフォルトではDATETIMEの扱いでエラーが出てしまう。
DSN(Data Source Name)にparseTimeとlocパラメータを付与することで、マッピングがうまくいく。
DBMS := "mysql" USER := "root" PASS := "" PROTOCOL := "tcp(127.0.0.1:3306)" DBNAME := "foo" CONNECT := USER + ":" + PASS + "@" + PROTOCOL + "/" + DBNAME + "?parseTime=true&loc=Asia%2FTokyo" db, err := sql.Open(DBMS, CONNECT)
parseTime=trueで、DATETIMEが[]byteではなくtime.Timeに変換される。
そのままだと標準時扱いなのでloc=Asia/Tokyoの指定を追加。
url.QueryEscape'ed されている必要があるのでloc=Asia%2FTokyoとなる。
https://github.com/go-sql-driver/mysql#timetime-support
参考
・github.com/go-sql-driver/mysql での datetimeとtime.Timeのマッピング
・go-sql-driver/mysqlのDSNの指定