如何在Qt C ++中使用QSqlQuery在QDateTime中获得毫秒数?

我有这个SQL查询:

SELECT LOG_TIME FROM PCY_LOG_EVENTS;

这将返回格式为“DD-MMM-YY HH.MM.SS.MS”的数据,如下所示:

30-OCT-11 09.00.57.638000000 AM

在我的Qt代码中,我有这样的:

QSqlQuery query("SELECT LOG_TIME from PCY_LOG_EVENTS", db);

while(query.next()) {
    //Displays a QMessageBox with the millisecond part of the QDateTime
    this->messageBox(QString::number(query.value(0).toDateTime().time().msec()));
}

所有毫秒值都为0。 毫秒值没有被存储的原因是什么? 我将如何获得毫秒值?


获取查询值作为QString

QString dateTimeString = query.value(0).toString();

然后用静态fromString的功能QDateTime 。 你必须指定你的字符串的格式。 我假设本月的日子有一个领先的零

QDateTime dateTime = QDateTime::fromString(dateTimeString, "dd-MMM-yy hh.mm.ss.zzz000000 A")

注意毫秒部分: zzz000000 。 由于最大值可以是999,所以你的例子的尾部零是没有意义的。 因此,通过使用zzz后跟零,您可以获得存储在字符串中的毫秒数。 唯一可能的问题是,您的月份部分使用大写字母,而MMM返回大写字母缩写的第一个字母。 我希望这不会有问题。

一旦你做了转换,你可以很容易地得到毫秒:

int ms = dateTime.time().msec();

这里有更多的格式化选项

链接地址: http://www.djcxy.com/p/25061.html

上一篇: How do I get milliseconds in a QDateTime with QSqlQuery in Qt C++?

下一篇: Store QDateTime (with millisends) in MySQL