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

问题描述 投票:0回答:1

我有这个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。没有存储毫秒值是否有原因?我如何获得毫秒值?

qt qt4
1个回答
2
投票

获取查询值作为

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

有关更多格式选项此处

© www.soinside.com 2019 - 2024. All rights reserved.