﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
30224	Mysql Datetime value is string instead of datetime object	Martin Kuhn		"**The Problem**
Datetimes are sometimes returned as objects or strings. It depends on the value. E.g. '2019-03-01 00:00:00.000000' is returned as a string, while`2018-12-12 22:02:53.134000` is provided as a datetime object in the sql/compiler.py. 

My Table
> CREATE TABLE `myTable` (
>   `id` char(32) COLLATE utf8mb4_unicode_ci NOT NULL,
>   `created_on` datetime(6) NOT NULL,
>   `modified_on` datetime(6) NOT NULL,
>   `first_spot_broadcast` datetime(6) DEFAULT NULL,
>   `expiry_date` datetime(6) DEFAULT NULL
> )

DB driver: django.db.backends.mysql
Django version:  2.0.4  tried 2.2 as well
DRF 3.8.2
mysqlclient = ""==1.4.2""

This issue only occurred for me when I execute this query.  I tried upgrading to 2.2 and the issue persisted.  

{{{
        .annotate(
        minExpiryDate=Min('buyout__expiry_date', filter=Q(buyout__is_archived=False, buyout__is_deleted=False))) \
        .filter(Q(minExpiryDate__gte=(now + expiryInterval))
                & Q(minExpiryDate__lte=(now + expiryInterval + timedelta(days=1))))
}}}



**My stack trace is:
**
{{{
Traceback (most recent call last):
  File ""/usr/share/pycharm/helpers/pydev/pydevd.py"", line 1741, in <module>
    main()
  File ""/usr/share/pycharm/helpers/pydev/pydevd.py"", line 1735, in main
    globals = debugger.run(setup['file'], None, None, is_module)
  File ""/usr/share/pycharm/helpers/pydev/pydevd.py"", line 1135, in run
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File ""/usr/share/pycharm/helpers/pydev/_pydev_imps/_pydev_execfile.py"", line 18, in execfile
    exec(compile(contents+""\n"", file, 'exec'), glob, loc)
  File ""/server/manage.py"", line 15, in <module>
    execute_from_command_line(sys.argv)
  File ""site-packages/django/core/management/__init__.py"", line 381, in execute_from_command_line
    utility.execute()
  File ""site-packages/django/core/management/__init__.py"", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File ""site-packages/django/core/management/base.py"", line 316, in run_from_argv
    self.execute(*args, **cmd_options)
  File ""site-packages/django/core/management/base.py"", line 353, in execute
    output = self.handle(*args, **options)
  File ""/server/buyout/management/commands/send_expiry_reminder_email.py"", line 8, in handle
    send_expiry_reminder_summary()
  File ""site-packages/celery/local.py"", line 191, in __call__
    return self._get_current_object()(*a, **kw)
  File ""site-packages/celery/app/task.py"", line 375, in __call__
    return self.run(*args, **kwargs)
  File ""/server/buyout/tasks/expiry_reminder.py"", line 46, in send_expiry_reminder_summary
    if len(projects_expiring) > 0:
  File ""site-packages/django/db/models/query.py"", line 250, in __len__
    self._fetch_all()
  File ""site-packages/django/db/models/query.py"", line 1186, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File ""site-packages/django/db/models/query.py"", line 63, in __iter__
    for row in compiler.results_iter(results):
  File ""site-packages/django/db/models/sql/compiler.py"", line 1009, in apply_converters
    value = converter(value, expression, connection)
  File ""site-packages/django/db/backends/mysql/operations.py"", line 252, in convert_datetimefield_value
    value = timezone.make_aware(value, self.connection.timezone)
  File ""site-packages/django/utils/timezone.py"", line 264, in make_aware
    return timezone.localize(value, is_dst=is_dst)
  File ""site-packages/pytz/__init__.py"", line 222, in localize
    if dt.tzinfo is not None:
AttributeError: 'str' object has no attribute 'tzinfo'
Exception ignored in: <generator object cursor_iter at 0x7f7ab3f88390>
Traceback (most recent call last):
  File ""site-packages/django/db/models/sql/compiler.py"", line 1469, in cursor_iter
    cursor.close()
  File ""site-packages/MySQLdb/cursors.py"", line 86, in close
    while self.nextset():
  File ""site-packages/MySQLdb/cursors.py"", line 136, in nextset
    nr = db.next_result()
MySQLdb._exceptions.OperationalError: (2006, '')
}}}

"	Bug	closed	Database layer (models, ORM)	dev	Normal	wontfix	mysql	Simon Charette Sarah Boyce	Unreviewed	0	0	0	0	0	0
