登录
首页 >  Golang >  Go问答

Golang中的mysql驱动程序中如何将日期字符串转换为时间并插入数据库?

来源:stackoverflow

时间:2024-02-08 19:51:24 388浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《Golang中的mysql驱动程序中如何将日期字符串转换为时间并插入数据库?》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

问题内容

所以,我的问题是将字符串日期(“1941-09-09”)转换为时间类型。

resultinsertuser, err := tx.exec(`insert into user 
(name, birthdate, password, email, document, phone, is_admin)
values (?, ?, ?, ?, ?, ?, ?)`,
    user.name,
    timestamp,
    user.password,
    user.email,
    user.document,
    user.phone,
    user.isadmin)

我正在使用类似于官方文档中的描述的解析函数,并且可以工作,但是,当使用 mysql 驱动程序的插入查询不起作用时,会出现以下错误消息:(

"incorrect datetime value: '1941-09-09 00:00:02' for column 'birthdate' at row 1"

我正在尝试使用 time.now() 代替变量进行测试并且...有效,怎么回事?

输出两个变量:

now := time.Now()
timestamp, _ := time.Parse("2006-01-02", user.Birthdate)
fmt.Printf("now: %v\ntimestamp: %v",
    now,
    timestamp)

now: 2022-11-05 08:28:59.671061 -0300 -03 m=+3.423587668
timestamp: 1941-09-09 00:00:00 +0000 UTC

有人帮我解决这个问题吗?


正确答案


您的代码是正确的。细节决定成败(在 mysql 文档中)。以下是 mysql doc 的格式:

Data Type Format Range
DATE YYYY-MM-DD 1000-01-01 to 9999-12-31
DATETIME YYYY-MM-DD hh:mm:ss 1000-01-01 00:00:00 to 9999-12-31 23:59:59
TIMESTAMP YYYY-MM-DD hh:mm:ss 1970-01-01 00:00:01 to 2038-01-19 03:14:07 (In UTC, i.e., Unix time)

今天关于《Golang中的mysql驱动程序中如何将日期字符串转换为时间并插入数据库?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>