Как в peewee извлечь только дату, если сам столбец имеет формат DateTimeField()

Рейтинг: 0Ответов: 1Опубликовано: 10.08.2023

первый

второй

В общем на первом скрине SQL запрос, который извлекает все даты и удаляет дубликаты даты, при этом первоначальный столбец имеет запись в формате DateTimeField(), т.е. в строковой переменной есть еще время (второй скрин). Отсекается время и выдаются даты без дубликатов.

Долго ломаю голову, не могу сделать то же самое в peewee. Есть вариант использовать функцию date так же, как мы используем ее в SQL? D документации написано, что можно извлекать отдельно день, месяц, год, но дату я е нашел...

Ответы

▲ 0

Если вам нужно воспроизвести запрос с помощью peewee, то в peewee есть модуль fn. И с помощью него вы можете вызывать функцию с любым именем.

from peewee import fn

Order.select(fn.DATE(Order.date)).distinct()

> ('SELECT DISTINCT DATE("t1"."date") FROM "order" AS "t1"', [])

fn позволяет писать какое угодно имя функции, хоть fn.FOOBAR (конечно тогда все упадет с sqlite3.OperationalError: no such function: FOOBAR)