Непонятное поведение sqlalchemy.func.date

имею такую орм модель

class Post(Base):
    added = Column(DateTime(timezone=t_zone), default=datetime.now)
    index = Column(Integer, default=0)
    ...

Имея t_zone

t_offset = timedelta(hours=3)
t_zone = timezone(offset=t_offset, name="UTC")

и такие записи в БД (postgres)

БД

Делая такой запрос

now = datetime.datetime.now(t_zone)
session.query(Post).filter(func.date(Post.added) == now.date()).order_by(Post.index.desc()).first()

Я, казалось бы, логично, получу запись id=151, потому что сегодня 10е число.

НО НЕТ, я получу запись id=150.

Почему? Ведь сегодня, очевидно, 10е число. Часовые пояса одинаковые для now и post.added, даже пайчарм говорит об этом.

Если у записи id=150 изменить час с 23 на, например, 15, то всё правильно сработает и я не получу вчерашнюю запись

P.S.

Я заметил, что в БД поле added является timestamp without time zone, хотя в орм я явно указываю тайм зону. Миграции проводил, даже таблицы пересоздавал, всё так же

P.S.2

Поделал запросы через интерактив. Типом данных у added, как говорит мне DataGrip, является timestamp with time zone

вывод


Ответы (0 шт):