我一直在引用上面的帖子.但令人不安的是做一个INSERT语句,其中一个字段是datetime.我试着做"NOW()"但是当我检查mysql数据库时,我正在看到00:00:00.任何人都知道我可以使用什么作为正确插入日期时间的值?
另外 - 我知道我可以使用go的时间包构建日期时间,但我不想使用运行Go的机器的时间戳.我想要运行mysql的机器的日期时间.亨西,为什么我用"NOW()".
stmt, err := db.Prepare("INSERT userinfo SET username=?,departname=?,created=?")
checkErr(err)
res, err := stmt.Exec("reckhou", "IT", "NOW()")
checkErr(err)
id, err := res.LastInsertId()
checkErr(err)
fmt.Println(id)
Run Code Online (Sandbox Code Playgroud)
spe*_*593 10
将NOW()需要在SQL文本的一部分,它不是一个绑定值.
INSERT userinfo SET username=?,departname=?,created=NOW()
Run Code Online (Sandbox Code Playgroud)
你对它进行编码的方式,MySQL看作"NOW()"是一个文字字符串,好像它是任何旧的字符串一样'foo'.MySQL正在将该字符串值转换为DATETIME(MySQL期望格式接近'YYYY-MM-DD HH:MM:SS',并且它无法将其转换为有效日期.我们期望像您看到的那样是NULL或特殊的"零日期".
这是另一个对我有用的解决方案.
var datetime = time.Now()
datetime.Format(time.RFC3339)
_, err = DatabaseHandle.Exec("INSERT into userinfo(id, date) VALUES (?,?)", 0, datetime)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10989 次 |
| 最近记录: |