У меня есть список времени UTC из моей таблицы.Я хочу получить отдельные даты в местном часовом поясе и получить количество записей для каждой даты - снова, для местного часового пояса.
Яконечно, я слишком усложняю эту проблему, но я довольно плохо знаком с Python и SQLAlchemy, не говоря уже о датах, времени и часовых поясах.
Я храню свои метки времени в UTC, используя столбец с default = utcnow ()... это прекрасно работает: 2019-07-05 06: 19: 59.920630
Я даже могу отображать временные метки в текущем часовом поясе браузера по мере необходимости (в других частях приложения).
Однако я пытаюсь выполнить запрос SQLAlchemy на основе часового пояса, чтобы просто получить записи для локального дня этого пользователя.
2019-07-05 06:19: 59.920630 можно преобразовать с помощью моей вспомогательной функции utc_to_local в 2019-07-04 23: 19: 59.920630 ... поэтому мне нужно, чтобы мой запрос включал эту запись даты и времени в мой запрос для всех записей "4 июля 2019 года"
Итак, я выполнял запрос SQLAlchemy, чтобы получить список различных дат
>>>uniquedays=db.session.query(func.distinct(func.DATE(TableClass.timestamp))).all()
, но я только что понял, что это возвращает список дат, которые потенциально не имеют никаких записей для языкового стандарта пользователя... в моем примере 5 июля нет записей для моего часового пояса, но он возвращается в качестве уникального.
Так что я также могу вернуть список datetime, например:
>>>datetimelist = db.session.query(TableClass.timestamp).all()
Но теперь я только что получил список кортежей datetime (я полагаю):
>>>datetime
[(datetime.datetime(2019, 6, 30, 21, 8, 11, 354018),), (datetime.datetime(2019, 6, 30, 21, 21, 58, 158467),), (datetime.datetime(2019, 6, 30, 23, 39, 8, 310248),)....................
Я использовал это для преобразования utc datetime в мое местное время:
def utc_to_local(utc_dt):
return utc_dt.replace(tzinfo=timezone.utc).astimezone(tz=None)
Я сейчас использую SQLite, но намереваюсь перейти наБаза данных MySQL для производства.