Query MongoDB timestamps using normalized ISO string bounds

This commit is contained in:
Andras Schmelczer 2026-10-27 19:56:34 +00:00
commit ebb3a1fb65
2 changed files with 47 additions and 2 deletions

View file

@ -0,0 +1,8 @@
from datetime import datetime, timezone
def normalise_datetime(value: datetime) -> datetime:
"""Interpret naive timestamps as UTC and normalize aware timestamps to UTC."""
return (
value.astimezone(timezone.utc).replace(tzinfo=None) if value.tzinfo else value
)

View file

@ -3,6 +3,7 @@ from typing import Any, Dict, List, Optional, Sequence, Tuple
from pymongo import ASCENDING, DESCENDING, MongoClient
from ..helper.normalise_datetime import normalise_datetime
from ..utilities import chunk
from ..views import Filter, SortBy, Trace
from .tracing_database_driver import TracingDatabaseDriver
@ -125,10 +126,14 @@ class MongoDbDriver(TracingDatabaseDriver):
and_query.append({})
if since:
and_query.append({"created": {"$gte": since}})
and_query.append(
{"created": {"$gte": normalise_datetime(since).isoformat()}}
)
if until:
and_query.append({"created": {"$lte": until}})
and_query.append(
{"created": {"$lte": normalise_datetime(until).isoformat()}}
)
if has_feedback is not None:
and_query.append(