РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
429 of 711 menu

Функция extract

Функция extract извлекает отдельный компонент даты или времени, например год, месяц, день или час, из выражения с типом даты. Первым параметром передаётся имя извлекаемой части в виде строки, а вторым - выражение столбца с датой или временем. Функция возвращает объект выражения SQL, который можно использовать в запросах, фильтрах и сортировке.

Синтаксис

extract(field, expr)

Пример

Давайте создадим таблицу с датами и извлечём из них год:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, Date, extract engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('pub_date', Date) ) metadata.create_all(engine) with engine.begin() as conn: conn.execute(articles.insert(), [ {'id': 1, 'title': 'article 1', 'pub_date': '2024-01-15'}, {'id': 2, 'title': 'article 2', 'pub_date': '2024-06-20'} ]) query = extract('year', articles.c.pub_date) with engine.connect() as conn: res = conn.execute(query).fetchall() print(res)

Результат выполнения кода:

[(2024,), (2024,)]

Пример

Давайте извлечём месяц и будем использовать его в условии:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, Date, extract engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('pub_date', Date) ) metadata.create_all(engine) with engine.begin() as conn: conn.execute(articles.insert(), [ {'id': 1, 'title': 'article 1', 'pub_date': '2024-01-15'}, {'id': 2, 'title': 'article 2', 'pub_date': '2024-06-20'} ]) query = articles.select().where(extract('month', articles.c.pub_date) == 1) with engine.connect() as conn: res = conn.execute(query).fetchall() print(res)

Результат выполнения кода:

[(1, 'article 1', datetime.date(2024, 1, 15))]

Итоговый SQL запрос:

SELECT articles.id, articles.title, articles.pub_date FROM articles WHERE EXTRACT(month FROM articles.pub_date) = 1

Пример

Давайте извлечём день и отсортируем статьи по нему:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, Date, extract engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('pub_date', Date) ) metadata.create_all(engine) with engine.begin() as conn: conn.execute(articles.insert(), [ {'id': 1, 'title': 'article 1', 'pub_date': '2024-01-20'}, {'id': 2, 'title': 'article 2', 'pub_date': '2024-01-05'} ]) query = articles.select().order_by(extract('day', articles.c.pub_date)) with engine.connect() as conn: res = conn.execute(query).fetchall() print(res)

Результат выполнения кода:

[(2, 'article 2', datetime.date(2024, 1, 5)), (1, 'article 1', datetime.date(2024, 1, 20))]

Итоговый SQL запрос:

SELECT articles.id, articles.title, articles.pub_date FROM articles ORDER BY EXTRACT(day FROM articles.pub_date)

Смотрите также

  • функцию cast,
    которая приводит выражение к заданному типу
  • функцию case,
    которая строит условное выражение SQL
  • функцию now,
    которая возвращает текущую дату и время
  • функцию current_date,
    которая возвращает текущую дату
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить