gpt4 book ai didi

mysql - 在 ziutek/mymysql 中选择 NULL 时间戳

转载 作者:IT王子 更新时间:2023-10-29 01:33:53 25 4
gpt4 key购买 nike

我有以下 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com