将Go的零时间。时间值插入MySQL DATETIME列错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Go的零时间。时间值插入MySQL DATETIME列错误相关的知识,希望对你有一定的参考价值。

time.Time生成的零Go值在插入mysql DATETIME列时会抛出错误。

我得到的错误:Error 1292: Incorrect datetime value: '0000-00-00' for column 'expires_at' at row 1

但是,当我将此time.Time值增加1纳秒或将年份更改为至少2时,它会插入而没有任何错误。

这是否意味着我无法将生成的零time.Time值插入MySQL DATETIME列?

我正在使用package sqlExec来演奏INSERT。我将time.Time值作为参数传递给Exec()

sess.Exec(stmt, valueArgs...)

答案

因为MySQL DATETIME有效范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。所有零都超出范围。

DATETIME类型用于包含日期和时间部分的值。 MySQL以'YYYY-MM-DD HH:MM:SS'格式检索并显示DATETIME值。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。

Source

以上是关于将Go的零时间。时间值插入MySQL DATETIME列错误的主要内容,如果未能解决你的问题,请参考以下文章

Go语言中new和make的区别

经典排序算法的零基础通俗讲解

Go语言中初始化变量中字面量&Type{}newmake的区别

JDBC:将日期值插入 MySQL

如何使用插入记录将所有值 frow 行插入 mysql 数据库?

无法将值插入 MySQL 表