在Go With ziutek/mymysql中选择空时间戳
我有下面的Google Go和MySql,其中有问题的在Go With ziutek/mymysql中选择空时间戳,mysql,go,Mysql,Go,我有下面的Google Go和MySql,其中有问题的date\u 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) 当我运行此查询并碰巧收到字段的一个空值时,我收到错误不支持的驱动程序->扫描对:->*time.time
date\u 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)
当我运行此查询并碰巧收到字段的一个空值时,我收到错误不支持的驱动程序->扫描对:->*time.time
我处理其他数据类型(例如INT
)的方法是
但它似乎不适用于时间戳或日期时间。有什么想法吗?这是一个谷歌小组,讨论的问题与你的几乎相同
这一节摘自go sql drivers/mysql的自述
time.time支持
MySQL日期和日期时间值的默认内部输出类型为[]字节,允许您在程序中将值扫描为[]字节、字符串或sql.RawBytes变量
然而,许多人希望将MySQL的DATE和DATETIME值扫描成time.time变量,这与MySQL中Go-to-DATE和DATETIME的逻辑相反。您可以通过将内部输出类型从[]字节更改为time.time,并使用DSN参数parseTime=true来实现这一点。您可以使用loc DSN参数设置默认时间。时间位置
注意:从Go 1.1开始,这使得time.time成为您可以扫描日期和日期时间值的唯一变量类型。例如,这会中断sql.RawBytes支持
或者,您可以使用NullTime类型作为扫描目标,该类型同时适用于time.time和string/[]字节
您必须将parseTime=true添加到DSN中,以便它自动解析为time.time或使用
使用mymysql 您可以尝试选择具有特定id的行,然后使用以下函数之一:
SELECT IFNULL(integer_field, 0) FROM table