Index: providers/ogr/qgsogrprovider.cpp =================================================================== --- providers/ogr/qgsogrprovider.cpp (revision 15215) +++ providers/ogr/qgsogrprovider.cpp (working copy) @@ -35,6 +35,7 @@ #include #include #include +#include #include "qgsapplication.h" #include "qgsdataprovider.h" @@ -391,9 +392,8 @@ { case OFTInteger: varType = QVariant::Int; break; case OFTReal: varType = QVariant::Double; break; - // unsupported in OGR 1.3 - //case OFTDateTime: varType = QVariant::DateTime; break; #if defined(GDAL_VERSION_NUM) && GDAL_VERSION_NUM >= 1400 + case OFTDateTime: varType = QVariant::DateTime; break; case OFTString: varType = QVariant::String; break; #endif default: varType = QVariant::String; // other unsupported, leave it as a string @@ -730,7 +730,14 @@ case QVariant::String: value = QVariant( mEncoding->toUnicode( OGR_F_GetFieldAsString( ogrFet, attindex ) ) ); break; case QVariant::Int: value = QVariant( OGR_F_GetFieldAsInteger( ogrFet, attindex ) ); break; case QVariant::Double: value = QVariant( OGR_F_GetFieldAsDouble( ogrFet, attindex ) ); break; - //case QVariant::DateTime: value = QVariant(QDateTime::fromString(str)); break; +#if defined(GDAL_VERSION_NUM) && GDAL_VERSION_NUM >= 1400 + case QVariant::DateTime: + int year, month, day, hour, minute, second, tz; + + OGR_F_GetFieldAsDateTime( ogrFet, attindex, &year, &month, &day, &hour, &minute, &second, &tz ); + value = QVariant(QDateTime( QDate( year, month, day ), QTime( hour, minute, second ))); + break; +#endif default: assert( NULL && "unsupported field type" ); } }