Конвертировать дату/время из sqlite в QDateTime
Используется QtSql. В Sqlite дата/время хранится как число с плавающей точкой, при выборке хочется привести его к типу QDateTime. Как лучше это сделать?
Ответы (1 шт):
Автор решения: sercxjo
→ Ссылка
Если хочется избежать преобразований данных в SQL, следующая функция делает это в C++. (На базе исправленного кода из forum.qt.io)
QDateTime toDateTime(const QVariant& v) const {
bool ok = false;
// Julian days start at noon (12:00 UTC)
double julian = v.toDouble(&ok) + 0.5;
if (!ok) {
return QDateTime();
}
// The day number is the integer part of the date
int julianDays = qFloor(julian);
QDate d = QDate::fromJulianDay(julianDays);
// The fraction is the time of day
double julianMSecs = (julian - static_cast<double>(julianDays)) * 86400.0 * 1000;
QTime t = QTime(0, 0, 0, 0).addMSecs(qRound(julianMSecs));
return QDateTime(d, t, Qt::UTC);
}