代码之家  ›  专栏  ›  技术社区  ›  Stephen

QSqlQuery更新/插入带有服务器时间的DateTime(例如当前\u时间戳)

  •  0
  • Stephen  · 技术社区  · 16 年前

    在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();
    

    Incorrect datetime value: 'CURRENT_TIMESTAMP()' for column 'time_field' at row 1 QMYSQL3: Unable to execute statement

    我已经仔细阅读了Qt文档以及我所知道的方法,但是在专门为支持MySQL当前的\u TIMESTAMP()函数或任何其他DBMS而设计的API中找不到任何东西。

    有什么建议吗?

    2 回复  |  直到 16 年前
        1
  •  2
  •   merula    16 年前

    这里没有要测试的SQL server,但是addBindValue()绑定了Qt的数据类型。您应该将timestamp函数直接放入查询中

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

        2
  •  1
  •   Leiaz    16 年前

    我看不到获取数据库时间命令的方法。我想应该是在 QSqlDriver 因为它是特定于数据库的。

    我唯一能想到的办法是:

    QString timeCommand("CURRENT_TIMESTAMP()");
    query.prepare(QString("INSERT INTO table SET time_field=%1 WHERE id=?").arg(timeCommand));
    

    编辑:事实上,我不确定CURRENT\u TIMESTAMP()是否特定于数据库。。。