gpt4 book ai didi

c++ - 使用服务器时间的 QSqlQuery UPDATE/INSERT DateTime(例如 CURRENT_TIMESTAMP)

转载 作者:行者123 更新时间:2023-11-28 01:11:32 29 4
gpt4 key购买 nike

我正在使用 QSqlQuery 将数据插入 MySQL 数据库。目前我关心的是让它与 MySQL 一起工作,但理想情况下我希望尽可能保持平台无关。

在 MySQL 的上下文中,我所追求的是最终得到有效执行类似以下查询的代码:

UPDATE table SET time_field=CURRENT_TIMESTAMP() WHERE id='5'

下面的代码是我尝试过的,但是失败了:

QSqlQuery query;
query.prepare("INSERT INTO table SET time_field=? WHERE id=?");
query.addBindValue("CURRENT_TIMESTAMP()");
query.addBindValue(5);
query.exec();

我得到的错误是:不正确的日期时间值:'CURRENT_TIMESTAMP()' for column 'time_field' at row 1 QMYSQL3: Unable to execute statement。我并不感到惊讶,因为我认为 Qt 在绑定(bind)值时会进行一些类型检查。

我已经深入了解了 Qt 文档以及我所知道的方法,但是我在专门为支持 MySQL 的 CURRENT_TIMESTAMP() 函数或任何其他 DBMS 的函数而设计的 API 中找不到任何内容。

有什么建议吗?

最佳答案

我这里没有要测试的 SQL 服务器,但是 addBindValue() 绑定(bind)了 Qt 的数据类型。您应该将时间戳函数直接放入查询中

QSqlQuery query;
query.prepare("INSERT INTO table SET time_field=CURRENT_TIMESTAMP() WHERE id=?");
query.addBindValue(5);
query.exec();

应该可以解决问题。

关于c++ - 使用服务器时间的 QSqlQuery UPDATE/INSERT DateTime(例如 CURRENT_TIMESTAMP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2783269/

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