MySQL TIMESTAMP 到 QDateTime 以毫秒为单位

标签 mysql qt

如果我使用 QSqlTableModel 访问 MySQL 数据库,我可以使用以下方法转换 TIMESTAMP 字段:

QDateTime dateTime = index(section, column).data().toDateTime();
QString str = dateTime.toString("yyyy-MM-dd hh:mm:ss.zzz");

因此 str 显示,即 2014-06-22 22:11:44.221。 但是我想使用 QSqlQuerry 访问数据库,所以我这样做:

QDateTime dateTime = query.value(column).toDateTime();
str = dateTime.toString("yyyy-MM-dd hh:mm:ss.zzz");

但现在我缺少毫秒,str 显示 2014-06-22 22:11:44.000。查看毫秒的正确方法是什么?

如果我执行 str = query.value(column).toString(); 然后我得到 2014-06-22T22:11:44

最佳答案

从这个页面:

https://dev.mysql.com/doc/refman/5.6/en/datetime.html

A DATETIME or TIMESTAMP value can include a trailing fractional seconds part in up to microseconds (6 digits) precision. In particular, as of MySQL 5.6.4, any fractional part in a value inserted into a DATETIME or TIMESTAMP column is stored rather than discarded.

所以,毫秒在MySQL中是有的!但是 query.value() 没有得到它 - 在 Qt 历史的这一点上由 @peppe 指出here .

回到原来的问题:没有正确的方法来查看毫秒,因为查询没有它。一种替代方法是修改查询,从:

SELECT timestamp FROM table;

SELECT DATE_FORMAT(timestamp, '%Y-%c-%e %H:%i:%s.%f') as timestamp FROM table;

然后完成工作:

QString str = query.value(column).toString();
QDateTime dateTime = QDateTime::fromString(str, "yyyy-MM-dd hh:mm:ss.zzz000");

我从 here 获得了洞察力.

关于MySQL TIMESTAMP 到 QDateTime 以毫秒为单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31582537/

相关文章:

c++ - 发射信号和槽的信息和控制(Qt)

mysql - SQL - JOIN 更多表而不是 IN(子查询)

mysql - 计算每天从 mysql 中的一个巨大表中创建的行数

java - 使用 JPA 插入数据后应用程序不会终止

mysql - 慢查询: Data categorization

c++ - 创建返回 QList<int> 的函数

c++ - 如何在 QTextEdit 中设置自定义文本颜色?

php - 具有 Symfony 表单/实体字段名称 'from' 时出现问题

c++ - 使用QT进行XML解析

c++ - QTextEdit。如何手动选择文本?