$ the-wire · showcase
SQLModel 0.0.45 makes UTC datetimes the default
By RepoJournal · Filed · About FastAPI & Pydantic · Composed from the cited sources · methodology
SQLModel 0.0.45 turns datetime handling into a breaking change: models now require aware datetimes and always read back UTC, a shift that reaches every SQLite and MySQL/MariaDB column you have already written.
0.0.45 tiangolo/sqlmodel
by github-actions[bot]
Every datetime field now resolves to UTCDateTime, a DateTime(timezone=True) type that rejects naive parameters, normalizes input to UTC, and returns aware UTC values on read, including from SQLite and MySQL/MariaDB. Existing models that pass naive datetimes or compare naive timestamps will break. Pydantic's AwareDatetime maps to the same type, while NaiveDatetime remains the explicit opt-in for...
✨ Use UTC datetimes by default tiangolo/sqlmodel
The implementation landed as a single PR from tiangolo, and the PR carries an AI disclaimer: it was made with the help of AI, using Codex with gpt-6-astra, manually reviewed. That disclaimer is worth reading alongside the changelog before you pin the release.
🐛 Fix SQLAlchemy type handling in `Field` (#2095) tiangolo/sqlmodel
Field now narrows sa_type to SQLAlchemy type classes and instances instead of the broader positional Column argument type, correcting a runtime/type-annotation mismatch. It supersedes an earlier attempt at the same fix while keeping the core correction but tightening the accepted types.
♻️ Replace the dataclass_transform shim with typing_extensions tiangolo/sqlmodel
The dataclass_transform shim is gone, replaced by typing_extensions, so type checkers follow the standard implementation instead of SQLModel's local copy. Static-analysis behavior for model classes should now track how typing_extensions defines it.
Action items
- → Migrate datetime fields to aware UTC values before adopting SQLModel 0.0.45 tiangolo/sqlmodel [plan]