现在,我的容器的时区与MySQL的时区不同,我需要运行一个查询来将MySQL上的时间字段更新到它的时区。通常,我可以使用"edited=NOW()“来运行查询,但是对于Golang松鼠,它没有正确的方法来设置这个子句。我不能同时更改我的应用程序和mysql容器的时区,我只需要更新DB中的日期。在Squirell有什么合适的方法吗?
发布于 2019-01-02 22:56:17
而不是Set(column, "NOW()")
,您需要执行Set(column, sq.Expr("NOW()"))
发布于 2018-09-12 23:25:00
我假设您正在使用这个松鼠包,下一次给出一个链接并提供一些示例代码。因此,我想您真正想要的是这样的sql:
update tablename set dt_edited=NOW() where id=1;
您可以简单地使用fmt.Sprintf安全地构建它,并直接或通过sq.Exec()使用db驱动程序执行它。
sql := fmt.Sprintf("update tablename set dt_edited=NOW() where id=%d" tableA.ID)
使用松鼠,您可能需要这样的东西:
db.Exec(update tablename set dt_edited=NOW() where id=?",tableA.ID)
我不确定确切的语法,但是类似的东西应该工作得很好,您只需要一个查询对象来发送sql。不要试图将dt_edited=NOW()作为param发送,因为它将被转义--您可以安全地以这种方式传递id。
你把它当作一根线传递。尝试:
Set("dt_edited=NOW()")
https://stackoverflow.com/questions/52302275
复制相似问题