Skip to content
Permalink
Browse files

mssql provider: improve datetime support (fixes #12461)

  • Loading branch information
jef-n committed Jun 8, 2015
1 parent cce3bb2 commit 018cdd25da8d826ad6eddea77f6605330e94d902
Showing with 34 additions and 4 deletions.
  1. +34 −4 src/providers/mssql/qgsmssqlprovider.cpp
@@ -309,16 +309,16 @@ QVariant::Type QgsMssqlProvider::DecodeSqlType( QString sqlTypeName )
{
type = QVariant::ByteArray;
}
else if ( sqlTypeName.startsWith( "date", Qt::CaseInsensitive ) )
{
type = QVariant::Date;
}
else if ( sqlTypeName.startsWith( "datetime", Qt::CaseInsensitive ) ||
sqlTypeName.startsWith( "smalldatetime", Qt::CaseInsensitive ) ||
sqlTypeName.startsWith( "datetime2", Qt::CaseInsensitive ) )
{
type = QVariant::DateTime;
}
else if ( sqlTypeName.startsWith( "date", Qt::CaseInsensitive ) )
{
type = QVariant::Date;
}
else if ( sqlTypeName.startsWith( "time", Qt::CaseInsensitive ) ||
sqlTypeName.startsWith( "timestamp", Qt::CaseInsensitive ) )
{
@@ -877,6 +877,21 @@ bool QgsMssqlProvider::addFeatures( QgsFeatureList & flist )
// binding a TEXT value
query.addBindValue( attrs[i].toString() );
}
else if ( type == QVariant::Time )
{
// binding a TIME value
query.addBindValue( attrs[i].toTime().toString( Qt::ISODate ) );
}
else if ( type == QVariant::Date )
{
// binding a DATE value
query.addBindValue( attrs[i].toDate().toString( Qt::ISODate ) );
}
else if ( type == QVariant::DateTime )
{
// binding a DATETIME value
query.addBindValue( attrs[i].toDateTime().toString( Qt::ISODate ) );
}
else
{
query.addBindValue( attrs[i] );
@@ -1117,6 +1132,21 @@ bool QgsMssqlProvider::changeAttributeValues( const QgsChangedAttributesMap &att
// binding a TEXT value
query.addBindValue( it2->toString() );
}
else if ( type == QVariant::DateTime )
{
// binding a DATETIME value
query.addBindValue( it2->toDateTime().toString( Qt::ISODate ) );
}
else if ( type == QVariant::Date )
{
// binding a DATE value
query.addBindValue( it2->toDate().toString( Qt::ISODate ) );
}
else if ( type == QVariant::Time )
{
// binding a TIME value
query.addBindValue( it2->toTime().toString( Qt::ISODate ) );
}
else
{
query.addBindValue( *it2 );

0 comments on commit 018cdd2

Please sign in to comment.
You can’t perform that action at this time.