- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有以下 Google Go 和 MySql,其中 date_update
有问题的字段通常返回为 NULL
值(value)。
var date_update time.Time
query := `SELECT date_update FROM users WHERE user_id=?`
err := conn.QueryRow(query, user_id).Scan(&date_update)
当我运行此查询并碰巧收到该字段的空值之一时,我收到错误 unsupported driver -> Scan pair: <nil> -> *time.Time
我处理其他数据类型(例如 INT
)的方式是
SELECT IFNULL(integer_field, 0) FROM table
但它似乎不适用于时间戳或日期时间。有什么想法吗?
最佳答案
这是一个谷歌群组discussion讨论的问题与您的问题几乎相同。
这部分取自 go-sql-drivers/mysql 的自述文件 repository .
time.Time support
The default internal output type of MySQL DATE and DATETIME values is []byte which allows you to scan the value into a []byte, string or sql.RawBytes variable in your programm.
However, many want to scan MySQL DATE and DATETIME values into time.Time variables, which is the logical opposite in Go to DATE and DATETIME in MySQL. You can do that by changing the internal output type from []byte to time.Time with the DSN parameter parseTime=true. You can set the default time.Time location with the loc DSN parameter.
Caution: As of Go 1.1, this makes time.Time the only variable type you can scan DATE and DATETIME values into. This breaks for example sql.RawBytes support.
Alternatively you can use the NullTime type as the scan destination, which works with both time.Time and string / []byte.
您要么必须将 parseTime=true 添加到您的 DSN,以便它自动解析为 time.Time,要么使用 NullTime .
使用mymysql
您可以尝试选择具有特定 ID 的行,然后使用以下函数之一:
关于mysql - 在 ziutek/mymysql 中选择 NULL 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25377347/
我是一名优秀的程序员,十分优秀!