Как получить миллисекунды в QDateTime с QSqlQuery в Qt C ++? - PullRequest
2 голосов
/ 22 ноября 2011

У меня есть SQL-запрос:

SELECT LOG_TIME FROM PCY_LOG_EVENTS;

Возвращает данные в формате "ДД-МММ-ГГ ЧЧ.ММ.СС.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 для всех значений в миллисекундах.Есть ли причина, по которой значения в миллисекундах не сохраняются?Как бы я получить значения миллисекунд?

1 Ответ

2 голосов
/ 22 ноября 2011

Получите значение запроса как 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();

Дополнительные параметры форматирования здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...