@@ -152,6 +152,7 @@ class DatabaseWrapper(BaseDatabaseWrapper):
152152 '08S02' ,
153153 )
154154 _sql_server_versions = {
155+ 9 : 2005 ,
155156 10 : 2008 ,
156157 11 : 2012 ,
157158 12 : 2014 ,
@@ -210,6 +211,21 @@ def __init__(self, *args, **kwargs):
210211 def create_cursor (self , name = None ):
211212 return CursorWrapper (self .connection .cursor (), self )
212213
214+ def _cursor (self ):
215+ new_conn = False
216+
217+ if self .connection is None :
218+ new_conn = True
219+
220+ conn = super ()._cursor ()
221+ if new_conn :
222+ if self .sql_server_version <= 2005 :
223+ self .data_types ['DateField' ] = 'datetime'
224+ self .data_types ['DateTimeField' ] = 'datetime'
225+ self .data_types ['TimeField' ] = 'datetime'
226+
227+ return conn
228+
213229 def get_connection_params (self ):
214230 settings_dict = self .settings_dict
215231 if settings_dict ['NAME' ] == '' :
@@ -351,8 +367,7 @@ def init_connection_state(self):
351367 datefirst = options .get ('datefirst' , 7 )
352368 cursor .execute ('SET DATEFORMAT ymd; SET DATEFIRST %s' % datefirst )
353369
354- # http://blogs.msdn.com/b/sqlnativeclient/archive/2008/02/27/microsoft-sql-server-native-client-and-microsoft-sql-server-2008-native-client.aspx
355- val = cursor .execute ('SELECT SYSDATETIME()' ).fetchone ()[0 ]
370+ val = self .get_system_datetime ()
356371 if isinstance (val , str ):
357372 raise ImproperlyConfigured (
358373 "The database driver doesn't support modern datatime types." )
@@ -365,6 +380,14 @@ def is_usable(self):
365380 else :
366381 return True
367382
383+ def get_system_datetime (self ):
384+ # http://blogs.msdn.com/b/sqlnativeclient/archive/2008/02/27/microsoft-sql-server-native-client-and-microsoft-sql-server-2008-native-client.aspx
385+ with self .temporary_connection () as cursor :
386+ if self .sql_server_version <= 2005 :
387+ return cursor .execute ('SELECT GETDATE()' ).fetchone ()[0 ]
388+ else :
389+ return cursor .execute ('SELECT SYSDATETIME()' ).fetchone ()[0 ]
390+
368391 @cached_property
369392 def sql_server_version (self , _known_versions = {}):
370393 """
0 commit comments