Функция func.current_date
Функция func.current_date создает SQL-выражение,
которое возвращает текущую дату, вычисляемую
непосредственно на стороне базы данных. Функция не
принимает обязательных параметров. Ее можно
использовать как в запросах SELECT, так и в
условиях WHERE для сравнения с датами в таблицах.
Синтаксис
func.current_date()
Пример
Давайте получим текущую дату с помощью простого запроса к базе данных:
from sqlalchemy import create_engine, select, func
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
res = conn.execute(select(func.current_date())).scalar()
print(res)
Результат выполнения кода:
"2024-05-20"
Пример
Давайте используем функцию в условии WHERE для выбора статей, созданных сегодня. Для этого создадим таблицу articles:
from sqlalchemy import create_engine, Column, Integer, String, Date
from sqlalchemy.orm import declarative_base, Session
Base = declarative_base()
class Article(Base):
__tablename__ = 'articles'
id = Column(Integer, primary_key=True)
title = Column(String)
text = Column(String)
status = Column(String)
num = Column(Integer)
created_at = Column(Date)
Теперь выполним запрос с использованием
func.current_date в условии:
from sqlalchemy import create_engine, select, func
from sqlalchemy.orm import Session
from models import Article
engine = create_engine('sqlite:///:memory:')
with Session(engine) as session:
stmt = select(Article).where(
Article.created_at == func.current_date()
)
res = session.execute(stmt).scalars().all()
for article in res:
print(article.title)
Итоговый SQL запрос:
SELECT articles.id, articles.title, articles.text, articles.status, articles.num, articles.created_at
FROM articles
WHERE articles.created_at = CURRENT_DATE
Пример
Давайте добавим текущую дату в выборку вместе с другими полями статьи:
from sqlalchemy import create_engine, select, func
from sqlalchemy.orm import Session
from models import Article
engine = create_engine('sqlite:///:memory:')
with Session(engine) as session:
stmt = select(
Article.title,
func.current_date().label('today')
)
res = session.execute(stmt).all()
for row in res:
print(row.title, row.today)
Результат выполнения кода:
"article 2024-05-20"
Смотрите также
-
функцию
func,
которая создает вызов произвольной SQL-функции -
функцию
current_timestamp,
которая возвращает текущую дату и время -
функцию
current_time,
которая возвращает текущее время -
функцию
now,
которая возвращает текущие дату и время