-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Examples
JulienSchmidt edited this page Feb 2, 2013
·
39 revisions
time.Time
from DATETIME
value
Due to Issue #9 Go-MySQL-Driver currently doesn't support Scan(*time.Time)
. Here is a simple workaround:
package main
import (
"database/sql"
"fmt"
_ "github.com/Go-SQL-Driver/MySQL"
)
func main() {
// Open database connection
db, err := sql.Open("mysql", "user:password@/dbname?charset=utf8")
if err != nil {
panic(err)
}
defer db.Close()
// Execute the query
rows, err := db.Query("SELECT timestamp FROM table")
if err != nil {
panic(err.Error())
}
var ts string
var tt time.Time
// Fetch rows
for rows.Next() {
err = rows.Scan(&ts)
if err != nil {
panic(err.Error())
}
// Parse the string to time.Time
tt, _ = time.Parse("2006-01-02 15:04:05", ts)
// Do something... here we just print the value
fmt.Println(tt.String())
}
}
package main
import (
"database/sql"
"fmt"
_ "github.com/Go-SQL-Driver/MySQL"
)
func main() {
// Open database connection
db, err := sql.Open("mysql", "user:password@/dbname?charset=utf8")
if err != nil {
panic(err)
}
defer db.Close()
// Execute the query
rows, err := db.Query("SELECT * FROM table")
if err != nil {
panic(err.Error())
}
// Get column names
columns, err := rows.Columns()
if err != nil {
panic(err.Error())
}
// Make a slice for the values
values := make([]*sql.RawBytes, len(columns))
// rows.Scan wants '[]interface{}' as an argument, so we must copy the
// references into such a slice
// See http://code.google.com/p/go-wiki/wiki/InterfaceSlice for details
scanArgs := make([]interface{}, len(values))
for i := range values {
scanArgs[i] = &values[i]
}
// Fetch rows
for rows.Next() {
// get RawBytes from data
err = rows.Scan(scanArgs...)
if err != nil {
panic(err.Error())
}
// Now do something with the data.
// Here we just print each column as a string.
var value string
for i, col := range values {
// Since RawBytes might be nil, we must check this before
// converting to string
if col == nil {
value = "NULL"
} else {
value = string(*col)
}
fmt.Println(columns[i], ": ", value)
}
fmt.Println("-----------------------------------")
}
}
Feel free to contribute your own examples!