我有下面的Google和MySql,其中date_update字段通常作为NULL值返回。
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但它似乎不适用于时间戳或日期时间。有什么想法吗?
发布于 2014-08-19 08:33:14
这是一个google组讨论,它讨论的问题与你的问题几乎相同。
这一节摘自go-sql驱动程序/mysql 存储库的自述文件。
time.Time support MySQL日期和日期时间值的默认内部输出类型是[]字节,它允许您将值扫描到程序中的[]字节、字符串或sql.RawBytes变量中。 但是,许多人希望将MySQL日期和日期时间值扫描到time.Time变量中,这与MySQL中的Go to DATE和DATETIME的逻辑相反。您可以通过使用DSN参数time.Time将内部输出类型从[]字节更改为parseTime=true来实现。可以使用loc参数设置默认的time.Time位置。 警告:从Go 1.1开始,time.Time是唯一可以扫描日期和日期时间值的变量类型。例如,这破坏了sql.RawBytes支持。 或者,您可以使用NullTime类型作为扫描目标,它可以同时处理time.Time和string /[]字节。
您必须将parseTime=true添加到您的DSN中,这样它才能自动解析到time.Time中,或者使用NullTime。
使用mymysql
您可以尝试使用特定的id来选择行&然后使用以下函数之一:
https://stackoverflow.com/questions/25377347
复制相似问题