Я начал осваивать django orm. Использую django 2.0.5 и MySQL. У меня есть база данных статей блога и в ней таблица с полем publish типа DateTimeField. Я пытаюсь отфильтровать данные по году, месяцу и дню. Для этого я использую следующие запросы:
current_year_posts = Post.objects.all().filter(publish__year=current_year)
current_month_posts = Post.objects.all().filter(publish__month=current_month)
current_day_posts = Post.objects.all().filter(publish__day=current_day)
Первый запрос отрабатывает корректно и я получаю то, что мне нужно, а вот второй и третий возвращают пустые QuerySet, хотя в базе точно есть записи, удовлетворяющие этим условиям.
Это привело меня в некий диссонанс и я решил посмотреть какой sql запрос генерирует этот код. Оказалось, что первый запрос генерирует структурно другой код в блоке WHERE запроса, нежели второй и третий.
SQL-код первого запроса:
SELECT `blog_post`.`id`, `blog_post`.`title`, `blog_post`.`slug`, `blog_post`.`author_id`, `blog_post`.`body`, `blog_post`.`publish`, `blog_post`.`created`, `blog_post`.`updated`, `blog
_post`.`status`
FROM `blog_post`
WHERE `blog_post`.`publish` BETWEEN 2020-01-01 00:00:00 AND 2020-12-31 23:59:59.999999 ORDER BY `blog_post`.`publish` DESC
SQL-код 2-го запроса(у 3 то же самое, только month на day меняется):
SELECT `blog_post`.`id`, `blog_post`.`title`, `blog_post`.`slug`, `blog_post`.`author_id`, `blog_post`.`body`, `blog_post`.`publish`, `blog_post`.`created`, `blog_post`.`updated`, `blog
_post`.`status`
FROM `blog_post`
WHERE EXTRACT(MONTH FROM CONVERT_TZ(`blog_post`.`publish`, 'UTC', 'UTC')) = 11 ORDER BY `blog_post`.`publish` DESC
Как изменить 2-ой и 3-ий запросы, чтобы они корректно работали?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите, пожалуйста, есть ли какие-нибудь общепринятые практики для удобного использования конфигов в тестах? Что я имею в виду: есть один...
Возможно, это не решается, но что если да?
придумал вот как и это работаетно видимо сокет ждет 30 секунд, а потом обрывает связь