我有这个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();
有关更多格式选项此处