gpt4 book ai didi

MySQL TIMESTAMP 到 QDateTime 以毫秒为单位

转载 作者:IT老高 更新时间:2023-10-29 00:12:13 26 4
gpt4 key购买 nike

如果我使用 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/

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